Olá Luiz... Pelo que entendi você precisa de dados de várias tabelas de uma vez. Acredito que essas tabelas tenham ligação entre elas. Se for isso, te digo que já usei sim, porém uma tabela no select principal e as outras ligadas por JOIN. Nunca usei todas juntas no select, a não ser para algum teste enquanto desenvolvia alguma rotina. Mas na aplicação nunca deixei desse jeito. Algo do tipo:
Select a.codigo, a.descricao, a.vendedor, b.nome as nomevendedor, b.codcidade, c.descricao as desccidade from Produto a INNER JOIN Vendedor b on b.codigo = a.vendedor INNER JOIN Cidade c on c.codigo = b.codcidade where a.codigo > 5 and a.codigo < 10 and b.codcidade = 2 order by b.nome Isso é só um exemplo que inventei agora, talvez não tenha nada a ver, mas a sintaxe que uso é mais ou menos essa. Nunca tive problema de lentidão. Utilizo principalmente em relatórios. Acho que é questão de você testar o que você criou e tentar fazer algumas alterações pra comparar resultados. Mesmo esse código que te enviei acredito que possa ser melhorado. Também não sou mestre em sql.. rs.. Se alguém tiver alguma dica de melhora, fiquem a vontado pra corrigir. Abraço. Claudiney Cogo N2 Sistemas e Soluções em Informática Maringá - Paraná ----- Original Message ----- From: Luiz Escobar To: Undisclosed-Recipient:; Sent: Tuesday, January 16, 2007 4:31 PM Subject: [delphi-br] Projeto com varias tabelas em 1 select... ja fiz varias coisas, mas não com tantas tabelas em um unico SELECT... vejam bem.... tenho uma tabela principal... esta depende de mais 6 tabelas filhas (referencia), onde 4 delas usam tabelas secundários para fazer referencias de N:N e 2 tabelas que são de 1:N... por equanto só fiz o esboço da coisa... mas to começando a pensar que isso pode ficar MUITO lento... o projeto é para MYSQL com InnoDB... então temos 4 com tabelas secundários = 8 + 2 + principal... = 11 tabelas fazendo uns belos JOIN´s heheheh.... +/-.... só pra esboçar de como a coisa pode ficar... (PS: isso ai ainda pode crescer + umas 4 tabelas... ou 2 com 2 tabelas para referencia... ) SELECT <Tabela.campo.*>, <bla>, <bla>... FROM TabelaPrincipal as TP, Tab1Prin as T1P, Tab1Ref as T1R, Tab2Prin as T2P, Tab2Ref as T2R, Tab3Prin as T3P, Tab3Ref as T3R, Tab4Prin as T4P, Tab4Ref as T4R, Tab1Unic as T1U, Tab2Unic as T2U Where ( tp.data = <dia_escolhido> ) And ( ( tp.id = t1r.idtp ) And ( t1r.idt1p = t1p.id ) ) And ( ( tp.id = t2r.idtp ) And ( t2r.idt2p = t2p.id ) ) And ( ( tp.id = t3r.idtp ) And ( t3r.idt3p = t3p.id ) ) And ( ( tp.id = t4r.idtp ) And ( t4r.idt4p = t4p.id ) ) And ( ( tp.id = t1u.id ) ) And ( ( tp.id = t2y.id ) ) ALLguem já fez algo parecido, fica/ficou muito lemto... o servidor (produção) é um P4 2.8Ghz com linux RedHat9 MySQL 5.xx e 1GB-RAM. o de backup (replicação) é menor... mas só será usado se o primeiro cair... ;-) Luiz Escobar Analista/Desenvolvedor: WEB - HTML/JavaScript/PHP/MySQL WINDOWS - Delphi/MyDAC/ASSEMBLER/MySQL/xBase DOS - Clipper/Assembler xBase SERVIDORES - NetWare4.11, LINUX-REDHAT9, WINDOWS-2k LINUX - LAZARUS/Kylix/MySQL; http://www.megasistema.com.br [As partes desta mensagem que não continham texto foram removidas]