Fórum problema com left outer join #261323

10/12/2004

0

Galera estou com seguinte problema eu tenho 2 tabelas contrato e
enderecos, e quero fazer uma select que una as duas tabelas por exemplo.

tabela contrato:
contrato cod_cliente nome
000001 00000001 CLIENTE TESTE
000002 00000001 CLIENTE TESTE

tabela endereco
cod_cliente endereco cidade
0000001 RUA TESTE 1 SAO PAULO
0000001 RUA TESTE 2 null

eu preciso montar uma select que mostra os contratos com respectiva cidade
do clientes, eu montei uma select que esta dando o seguinte resultado

select en.cidade,co.* from contrato co left outer JOIN endereco en on
co.cod_cliente=en.cod_cliente
order by co.con_nome

resultado:
cidade contrato cod_cliente nome
SAO PAULO 000001 00000001 CLIENTE TESTE
NULL 000002 00000001 CLIENTE TESTE

eu preciso que de este resultado:
cidade contrato cod_cliente nome
SAO PAULO 000001 00000001 CLIENTE TESTE
SAO PAULO 000002 00000001 CLIENTE TESTE


Agradeco desde ja qualquer ajuda, estou usando o firebird 1.5


Ronaldomr

Ronaldomr

Responder

Posts

10/12/2004

Nelson_prog

Ronaldo pelo o que estou notando não é que o seu select esteja errado vi que o segundo registro da tabela de endereços não possui a cidade.

O LEFT OUTER JOIN retorna todas as linhas do produto cartesiano qualificado ( todas as linhas combinadas que passam pela condição ON), mais uma cópia de cada linha da tabela à esquerda para a qual não há uma linha da tabela à direita que tenha passado pela condição ON.

Espero que essa explicação tenha esclarecido!

Qualquer dúvida mande um email com o script do banco:

Nelson


Responder

Gostei + 0

10/12/2004

Ronaldomr

o problema é que no 2 registro realmente a cidade é nula mesmo


Responder

Gostei + 0

10/12/2004

Nelson_prog

por que é null o 2º registro?


Responder

Gostei + 0

10/12/2004

Gandalf.nho

Mas como você quer mostrar uma cidade, se naquele registro a cidade é nula? Se a idéia é mostrar uma cidade ´default´ no lugar de NULL, você poderia usar a função COALESCE do FB 1.5


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar