
LEFT OUTER JOIN CAMBIO DE SENTIDO?
Publicado por DALSOM (24 intervenciones) el 29/01/2017 17:03:43
Saludos a todos.
Hace tiempo uso el left outer join, y segun la pagina de MS puedo condicionar la salida de una tabla en la clausula where del select. Por tal motivo, los dos selects de este ejemplo deberian exhibir el mismo numero de filas e identicos valores. Lo que quiero obtener es el resultado del query con un subquery (2do query o ultimo), pero ya no resulta
RESULTADOS :
Q1 :
idh hdesc dvalue
1 A 10
2 B 20
Q2:
idh hdesc dvalue
1 A 10
2 B 20
3 C NULL
En el query no 1, el left outer join esta funcionando como in inner join, eliminando la tercera fila.
Es que me falta algo en el primer query, o debo setear algun flag?
Hace tiempo uso el left outer join, y segun la pagina de MS puedo condicionar la salida de una tabla en la clausula where del select. Por tal motivo, los dos selects de este ejemplo deberian exhibir el mismo numero de filas e identicos valores. Lo que quiero obtener es el resultado del query con un subquery (2do query o ultimo), pero ya no resulta

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
create table #theader(idh int not null,hdesc char(2) not null)
create table #detail(idd int identity(1,1) not null,idh int,dvalue int not null)
insert into #theader(idh,hdesc) values(1,'A')
insert into #theader(idh,hdesc) values(2,'B')
insert into #theader(idh,hdesc) values(3,'C')
insert into #detail(idh,dvalue) values(1,10)
insert into #detail(idh,dvalue) values(2,20)
insert into #detail(idh,dvalue) values(3,30)
-- Q1 :
select h.*,d.dvalue
from #theader h left outer join
#detail d on h.idh = d.idh
where dvalue <25
-- Q2:
select h.*,d.dvalue
from #theader h left outer join
(select * from #detail where dvalue <25) d on h.idh = d.idh
RESULTADOS :
Q1 :
idh hdesc dvalue
1 A 10
2 B 20
Q2:
idh hdesc dvalue
1 A 10
2 B 20
3 C NULL
En el query no 1, el left outer join esta funcionando como in inner join, eliminando la tercera fila.
Es que me falta algo en el primer query, o debo setear algun flag?
Valora esta pregunta


0