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, LOG2Este 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
                    
                

