Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

paulo.cez

consulta entre 3 tabelas usando join duplicando

Recommended Posts


Boa Tarde Amigos!


Tenho que fazer uma consulta envolvendo 4 tabelas, até as duas primeiras tabelas consigo numa boa, mas quando coloco a 3 a consulta se duplica


segue as consultas individuais de cada tabela


tabela 1: remessa


codremessa arqremessa

118 remess21


tabela 2: remessa2


codremessa num_nota parcela

118 2790 1

118 2790 2

118 2791 1

118 2791 2

118 2791 3


tabela 3: faturar


num_nota cod_cliente nossonumero parcela

2790 5973 573 1

2790 5973 574 2

2791 5964 575 1

2791 5964 576 2

2791 5864 577 3


tabela 4: clientes


cod_cliente nomclient

5973 JOAO DA SILVA

5964 MARIA GONÇALVES


Gostaria que a consulta ficasse assim


codremessa arqremssa num_nota cod_cliente nomclient nossonumero parcela

118 remess21 2790 5973 JOAO DA SILVA 573 1

118 remess21 2790 5973 JOAO DA SILVA 574 2

118 remess21 2791 5964 JOAO DA SILVA 575 1

118 remess21 2791 5964 JOAO DA SILVA 576 2

118 remess21 2791 5964 JOAO DA SILVA 577 3


segue o script que estou usando:


select remessa.codremssa, remessa.arqremssa, remessa2.num_nota, remessa2.parcela, faturar.cod_cliente, from remessa inner join remessa2 on remessa2.codremessa = remessa.codremessa and remessa.codremessa = '118' inner join faturar on faturar.num_nota = remessa2.num_nota


Se alguem puder me ajudar como montar essa consulta agradeço, pois como mencionei consigo até a segunta tabela, quando junto com a 3 os dados se duplicam


resultando com o script, vejam os dados duplicados


codremessa arqremssa num_nota cod_cliente nossonumero parcela

118 REMESS21 2790 5973 573 1

118 REMESS21 2790 5973 573 2

118 REMESS21 2790 5973 574 1

118 REMESS21 2790 5973 574 2

118 REMESS21 2791 5964 575 1

118 REMESS21 2791 5964 575 2

118 REMESS21 2791 5964 575 3

118 REMESS21 2791 5964 576 1

118 REMESS21 2791 5964 576 2

118 REMESS21 2791 5964 576 3

118 REMESS21 2791 5964 577 1

118 REMESS21 2791 5964 577 2

118 REMESS21 2791 5964 577 3


Alguem pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites
$consulta = mysql_query("SELECT * FROM tabela1
INNER JOIN tabela2 ON
tabela1.campo1 = tabela2.campo1
INNER JOIN tabela3 ON
tabela1.campo1 = tabela3.campo1
INNER JOIN tabela4 ON
tabela1.campo1 = tabela4.campo4
");

Mecher com união de tabelas foi a coisa mais complicada que já achei, mas depois que aprende é fácil, eu também estava usando um código no mesmo formato do seu, mas da certo com no máximo 2 tabelas. Com este código que te passei você pode unir quantas tabelas quiser.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Noite Lauro!

 

o problema é que na minha primeira tabela, não tenho campo para comparar com a tabela 3, a primeira comparo com a segunda, a segunda comparo com a terceira e por fim com a quarta, pois os campos só vão aparecendo nas tabelas seguintes.

 

ou devo começar de tras pra frente?

 

tens como montar o seu codigo encima do meu script acima?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Noite Lauro!

 

o problema é que na minha primeira tabela, não tenho campo para comparar com a tabela 3, a primeira comparo com a segunda, a segunda comparo com a terceira e por fim com a quarta, pois os campos só vão aparecendo nas tabelas seguintes.

 

ou devo começar de tras pra frente?

 

tens como montar o seu codigo encima do meu script acima?

 

É só trocar os nomes no código que te passei, mesmo sendo valores diferentes. Não sei qual linguagem você está usando, mas se for php da para fazer inner join com duas tabelas ai você faz um loop while com os resultados e dentro do loop você faz o inner join com as outras duas tabelas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se não existem registros duplicados em cada uma das tabelas.

Ou

Tente usar o DISTINCT.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.