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]

Responder a