problema com left outer join
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
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
Curtidas 0
Respostas
Nelson_prog
10/12/2004
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
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
GOSTEI 0
Ronaldomr
10/12/2004
o problema é que no 2 registro realmente a cidade é nula mesmo
GOSTEI 0
Nelson_prog
10/12/2004
por que é null o 2º registro?
GOSTEI 0
Gandalf.nho
10/12/2004
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
GOSTEI 0