LEFT JOIN DUPLICANDO REGISTROS
Bom dia,
Pessoal, estou tentado fazer um select mas não estou conseguindo de forma alguma, é o seguinte, tenho uma tabela de clientes e outra de endereços.
a tabela de clientes tem a seguinte estrutura
Cliente:
NOME
IDENDENTREGA
IDENDCOBRANCA
IDENDENDERECO
.....
Daà agora tenho uma única tabela de endereço para esses campos aÃ, com a seguinte estrutura
TAB_ENDERECO
ID
LOGRADOURO
....
O problema é que na hora de fazer o LEFT JOIN os registros vem duplicados, porque eu tenho que pesquisar na tabela de endereço 3 vezes, pra pegar o endereço do cliente, endereço de cobrança e o endereço de entrega.
Este ai é um exemplo de como estou tentando, mas não dá certo, ele duplica os registros, alguém tem alguma solução?
Lembrando que o banco de dados é firebird.
Obrigado
Pessoal, estou tentado fazer um select mas não estou conseguindo de forma alguma, é o seguinte, tenho uma tabela de clientes e outra de endereços.
a tabela de clientes tem a seguinte estrutura
Cliente:
NOME
IDENDENTREGA
IDENDCOBRANCA
IDENDENDERECO
.....
Daà agora tenho uma única tabela de endereço para esses campos aÃ, com a seguinte estrutura
TAB_ENDERECO
ID
LOGRADOURO
....
O problema é que na hora de fazer o LEFT JOIN os registros vem duplicados, porque eu tenho que pesquisar na tabela de endereço 3 vezes, pra pegar o endereço do cliente, endereço de cobrança e o endereço de entrega.
SELECT DISTINCT CLIENTE.codigo, END1.LOGRADOURO AS LOG1, END2.LOGRADOURO AS LOG2 FROM CLIENTE
JOIN ENDERECO AS END1
ON END1.ID = CLIENTE.idendereco
JOIN ENDERECO AS END2
ON END2.ID = CLIENTE.idenderecoentrega
GROUP BY CODIGO, LOG1, LOG2
Este ai é um exemplo de como estou tentando, mas não dá certo, ele duplica os registros, alguém tem alguma solução?
Lembrando que o banco de dados é firebird.
Obrigado
Tenta assim
Citação:SELECT Cliente.ID, END_1.LOGRADOURO, END_2.LOGRADOURO
FROM (Endereco AS END_1 RIGHT JOIN Cliente ON END_1.ID = Cliente.IDENDENDERECO) LEFT JOIN Endereco AS END_2 ON Cliente.IDENDENTREGA = END_2.ID;
CLEVERTON, valeu ae pela ajuda, mas continua duplicando.
Altair.
Esse select está um pouco confuso.
Veja:
[Ô]END1.ID = CLIENTE.idendereco[Ô]
Onde END1 = tabela Endereco...certo e nela realmente existe o campo ID.
E CLIENTE = Tabela Cliente...Não encontrei o campo idendereco.
Pergunto:
IDENDCOBRANCA
IDENDENDERECO
Esse select está um pouco confuso.
Veja:
[Ô]END1.ID = CLIENTE.idendereco[Ô]
Onde END1 = tabela Endereco...certo e nela realmente existe o campo ID.
E CLIENTE = Tabela Cliente...Não encontrei o campo idendereco.
Pergunto:
Citação:da tabela cliente refere-se a qual dos campos abaixo:CLIENTE.idendereco
IDENDCOBRANCA
IDENDENDERECO
Coloca a base ai com as tabelas e os dados que eu desenrolo pra vc
Fiz um teste com o mesmo select sem usar Distinct e Group By e não retorno nada duplicado.
Acredito que o problema não está no Select mas sim nas tabelas.
Procure os registros duplicados e delete eles, acho que isso resolve seus problemas.
Acredito que o problema não está no Select mas sim nas tabelas.
Procure os registros duplicados e delete eles, acho que isso resolve seus problemas.
Citação::
Fiz um teste com o mesmo select sem usar Distinct e Group By e não retorno nada duplicado.
Acredito que o problema não está no Select mas sim nas tabelas.
Procure os registros duplicados e delete eles, acho que isso resolve seus problemas.
assino embaixo!
Tópico encerrado , respostas não são mais permitidas