Concordo com o Osvaldo, e adiciono um conselho: use o MySQL. o HSQLDB do OpenOffice é muito limitado e tem suporte muito limitado a INNER JOINS, além de não suportar SUBQUERIES. Bom, quanto a VIEWS, este foi um recurso que recentemente descobri no MySQL que melhorou exponencialmente o tempo das minhas consultas n:n, pois antes levava um, dois minutos (ou simplesmente travava e tinha que reiniciar o micro) com SUBQUERIES, utilizando VIEWS nos INNER JOIN a consulta retorna o resultado em menos de 0.01 segundo, com mais de duzentos campos e uns vinte, trinta campos relacionados n:n (tenho umas três tabelas que possuem relação n:n com a tabela principal e outras tantas com relação 1:n). Então, a não ser que o HSQLDB suporte VIEWS, recomendo usar o MySQL com driver ODBC. Pode ser que o HSQL suporte VIEW, não sei (pois as descobri depois de ter mudado para o MySQL), mas se suportar, deve ser lenta de qualquer forma.
bom, pra não ficar só no papo teórico deixo uns comandos 1. cria as tabela CREATE TABLE EMPRESA( empresa_id int auto_increment, EMPRESA_NOME CHAR(255), INDEX(empresa_NOME),PRIMARY KEY(empresa_id)); CREATE TABLE FATURA(FATURA_ID int auto_increment,VALOR DECIMAL(15,2),DATA date , empresa_id int, PRIMARY KEY(FATURA_ID)); CREATE TABLE EMP_FAT(fatura_id int, empresa_id INT, FOREIGN KEY (FATURA_ID) references FATURA(FATURA_ID), FOREIGN KEY (EMPRESA_ID) references EMPRESA(EMPRESA_ID)); daí cria dois formulários, um pra inserir empresas, outro pra inserir faturas, e um terceiro (que deve ser aprimorado) que coloca os id de empresas e faturas na tabela EMP_FAT e usa esta consulta pra exibir o relatório: SELECT EMPRESA_NOME, FATURA_ID, VALOR, DATA FROM EMP_FAT INNER JOIN ( EMPRESA ) USING ( EMPRESA_ID ) INNER JOIN ( FATURA ) USING ( FATURA_ID ) dá pra criar uma view desta select apenas colocando "create view faturas as" antes do "SELECT" aí que tá, será que o HSQL suporta este create view? este comando é do MySQL. e de lambuja uns dados fictícios pra quem quiser brincar -- -- Extraindo dados da tabela `EMPRESA` -- INSERT INTO `EMPRESA` (`empresa_id`, `EMPRESA_NOME`) VALUES (1, 'SUPER EMPRESA FATUREIRA SA'), (2, 'SIMPLATEC PLASTICOS'); -- -- Extraindo dados da tabela `EMP_FAT` -- INSERT INTO `EMP_FAT` (`fatura_id`, `empresa_id`) VALUES (1, 1), (1, 2), (2, 1), (3, 2); -- -- Extraindo dados da tabela `FATURA` -- INSERT INTO `FATURA` (`fatura_id`, `VALOR`, `DATA`) VALUES (1, 100.00, '2008-07-10'), (2, 243.00, '2008-07-17'), (3, 123.00, '2008-07-25'); Coloquei a estrutura+dados completas (nomes de tabelas, dados, em minúsculas pra facilitar) em http://jm.freeshell.org/dl/exemplo_mysql_1.txt Abraços, Juari 2008/7/9 Osvaldo Rosario Kussama <[EMAIL PROTECTED]>: > Julio Franco escreveu: >> >> Pessoal. >> Tenho uma tabela de empresas e uma de faturas. >> uma empresa tem várias faturas. >> Tabela Empresa: Nome (chave primária) >> Tabela Faturas: Fatura, Empresa (chaves primárias) >> Tenho um formúlário empresa com um sub-formiário faturas. >> Quero relacionar 1 empresa para várias empresas. >> Como faço isso? rsrsrs >> Já tentei fazer o seguinte: >> Ferramenta Relações... >> Inserir as tabelas Empresas e Faturas. >> Arrastei o campo nome da empresa (da tabela empresas) para cima do campo >> empresas da tabela faturas. Abre a janela e pedi para atualizar e excluir em >> cascata. Salvei. >> Quando vou ao formulário e altero o nome da empresa e clico em salvar, dá >> um erro e não altera o nome na tabela faturas. >> > > > Dúvida: "Quero relacionar 1 empresa para várias empresas." > > É isso mesmo? > > De qualquer forma um relacionamento n:n se implementa criando uma tabela > auxiliar. > Por ex. se queremos que uma empresa possa estar relacionada a n faturas e > uma fatura possa estar relacionada a n empresas então criamos uma tabela > auxiliar (por ex. emp-fat) cuja chave primária será composta pela chave > estrangeira de empresa e pela chave estrangeira de fatura. > > Se for realmente um relacionamento de empresas para empresas você terá que > definir qual o papel de cada uma no relacionamento. > > Osvaldo > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- home rig: E2160 [EMAIL PROTECTED] (9*333/1.42V)|XFX 8600GT 620Mhz GPU/1.6Ghz GDDR3|2*2Gb Viper 1.066Ghz @5-5-5-15|Asus P5K SE|Zalman ZM360BAPS mobile: HP Pavillion DV6230BR|Turion MK-36 2Ghz|2*1Gb DDR2-667|802.11g Wi-Fi work: Celeron 2.4Ghz|256Mb DDR|{40Gb PATA, 680Gb network shares} disk --> check jm.freeshell.org/dl - bash and Cell/BE programs! <-- --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
