INNER JOIN NO ACCESS

USUARIO.EXCLUIDOS 24/05/2004 09:19:25
#26325
Tio Max está de volta!!!

Férias estranhas... 20 dias dentro de casa...

Pelo menos meu pczinho aguentou firme e me proporcionou boas horas de diversão.

Coisa de gente esquisita (como os frequentadores dessa inigualável página): depois de quase dois anos olhando pra telinha, tiro 20 dias de férias PRA QUÃÅ ? Pra fazer uns bicos em VB

Mas, vamos à  pergunta: uso o Inner Join há algum tempo, sem dificuldade. Mas sempre com duas tabelas. Agora modelei um BD onde preciso "Innerjoinzar" 6 tabelas, e o Access não aceitou. Pelo menos a versão que tenho em casa (97, pois tenho medo do meu pois-é abrir o bico de vez). Estou fazendo algo errado? As versões 2000/XP aceitam?

Li que, mesmo podendo "innerjoinzar" mais do que duas tabelas, o melhor é fazer a operação de duas em duas. Alguém já realizou algum teste de performance como esse? (pra falar a verdade, até estou contente com a velocidade que consegui com joins 2x2, mas o código fica muito feio; só mudaria se o recordset viesse beeeem mais rápido).

Sendo só para o momento, despeço-me com protestos da mais elevada estima e distinta consideração.
USUARIO.EXCLUIDOS 24/05/2004 09:30:48
#26330
Resposta escolhida
Bom, Quando Preciso "Innerjoinizar" (ate q ficou bom cara) Tabelas, mesmo q 2, Prefiro usar WHERE. Fica +/- Assim:

[/c]
SELECT NotaFiscal.*, Produto.Descricao, Cliente.Nome 
FROM NotaFiscal, Produto, Cliente
WHERE NotaFiscal.ProdutoFk = Produto.ProdutoPk
AND NotaFiscal.ClienteFk = Cliente.ClientePk[c]


Acho q nunca usei 6 tabs de uma vez, mas com 4 tenho certeza q da

Qualquer duvida Post

Te +[S56]

PS: Tire umas ferias de verdade da Proxima, senao logo logo c vai querer quebrar o computador.
USUARIO.EXCLUIDOS 24/05/2004 13:16:04
#26375
Galera, da uma olhada nesses 2 codigos, que Teoricamente sao Iguais:
[/c]
strPesquisa = "SELECT Tab_Familia.Descricao, " & _
"Tab_Marca.Descricao, " & _
"Tab_Modelo.Modelo, " & _
"Tab_Produto.* " & _
"FROM (Tab_Familia INNER JOIN (Tab_Marca INNER JOIN Tab_Modelo ON Tab_Marca.Marca = Tab_Modelo.Marca) ON Tab_Familia.Familia = Tab_Modelo.Familia) INNER JOIN Tab_Produto ON (Tab_Modelo.Modelo = Tab_Produto.Modelo) AND (Tab_Modelo.Marca = Tab_Produto.Marca) AND (Tab_Modelo.Familia = Tab_Produto.Familia)


strPesquisa = "SELECT Tab_Familia.Descricao, " & _
"Tab_Marca.Descricao, " & _
"Tab_Modelo.Modelo, " & _
"Tab_Produto.* " & _
"FROM Tab_Familia, " & _
"Tab_Marca, " & _
"Tab_Modelo, " & _
"Tab_Produto " & _
"WHERE Tab_Modelo.Familia = Tab_Familia.Familia " & _
"AND Tab_Modelo.Marca = Tab_Marca.Marca " & _
"AND Tab_Produto.Familia = Tab_Modelo.Familia " & _
"AND Tab_Produto.Marca = Tab_Modelo.Marca " & _
"AND Tab_Produto.Modelo = Tab_Modelo.Modelo"
[c]


Confesso a vcs q quando usava INNER JOIN, fazia as consultas no ACCESS primeiro, pq nunca entendi direito como funcionava.

Depois que comecei a usar WHERE era soh pensar no que eu queria e transformar em codigo, e fazendo um SQL estruturado (espero que apareca, pq eu nunca consegui fazer funcionar direito o formato CODIGO deste site) fica muito + facil de entender. Comparem ai p/ vcs verem.

Te +[S56]
Tópico encerrado , respostas não são mais permitidas