LEFT JOIN DUPLICANDO REGISTROS

ALTAIR148 04/04/2014 10:42:54
#436884
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.

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
CLEVERTON 04/04/2014 13:28:14
#436903
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;


ALTAIR148 04/04/2014 15:49:13
#436911
CLEVERTON, valeu ae pela ajuda, mas continua duplicando.
DUMMIES 04/04/2014 19:14:27
#436917
Resposta escolhida
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:

Citação:

CLIENTE.idendereco

da tabela cliente refere-se a qual dos campos abaixo:

IDENDCOBRANCA
IDENDENDERECO


CLEVERTON 05/04/2014 13:21:57
#436927
Coloca a base ai com as tabelas e os dados que eu desenrolo pra vc
DUMMIES 05/04/2014 15:18:13
#436929
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.
CLEVERTON 05/04/2014 18:33:51
#436933
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