Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Renato Lima

[Resolvido] Left Join que não funciona

Recommended Posts

Olá pessoal,

 

Já lido com BD de dados há algum tempo, estou fazendo uma consulta com left join que até agora não descobri o que está de errado com ela e já tentei de diversas formas e não retorna o resultado esperado e é o seguinte: tenho a tabela PROORREL com as pks (emp_codemp, rel_codigo, var_codigo) e PROLANCA (emp_codemp, var_codigo, lan_data, lan_hora), eu quero a consulta exiba todas as informações do campo PROORREL.var_codigo, independentemente se existe os não informações no campo PROLANCA.lan_valor, segue abaixo o que foi feito:

 

Informações da PROORREL:

select count(var_codigo) from proorrel r

where r.emp_codemp = '001' and

r.rel_codigo = '103';

 

Total: 106

 

Informações da PROLANCA:

select count(lan_valor) from prolanca l

where l.lan_data = to_date('22/02/2011', 'dd/mm/yyyy') and

l.lan_hora = 'XXXX';

 

Total: 1

 

 

O selects que foram utilizados está retornando nulo e não as 106 linhas da PROORREL:

 

select r.var_codigo, l.lan_valor

from proorrel r,

prolanca l

where r.emp_codemp(+) = l.emp_codemp and

r.var_codigo(+) = l.var_codigo and

r.emp_codemp = '001' and

r.rel_codigo = '103' and

l.lan_data = to_date('22/02/2011', 'dd/mm/yyyy') and

l.lan_hora = 'XXXX';

 

Total: nenhuma linha.

 

select r.var_codigo, l.lan_valor

from proorrel r,

prolanca l

where r.emp_codemp = l.emp_codemp(+) and

r.var_codigo = l.var_codigo(+) and

r.emp_codemp = '001' and

r.rel_codigo = '103' and

l.lan_data = to_date('22/02/2011', 'dd/mm/yyyy') and

l.lan_hora = 'XXXX';

 

Total: nenhuma linha.

 

select r.var_codigo, l.lan_valor

from proorrel r

left outer join prolanca l on

r.emp_codemp = l.emp_codemp and

r.var_codigo = l.var_codigo

where r.emp_codemp = '001' and

r.rel_codigo = '103' and

l.lan_data = to_date('22/02/2011', 'dd/mm/yyyy') and

l.lan_hora = 'XXXX';

 

Total: nenhuma linha.

 

 

Alguém tem uma solução? A versão do BD é a Oracle 11g.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente :

 

select r.var_codigo, l.lan_valor
from proorrel r
left outer join prolanca l on
r.emp_codemp = l.emp_codemp and
r.var_codigo = l.var_codigo
where r.emp_codemp = '001' and
r.rel_codigo = '103' and
(l.emp_codemp is null or l.lan_data = to_date('22/02/2011', 'dd/mm/yyyy')) and
(l.emp_codemp is null or l.lan_hora = 'XXXX');

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.