SQL Server - LEFT OUTER JOIN CAMBIO DE SENTIDO?

 
Vista:
sin imagen de perfil

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

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

LEFT OUTER JOIN CAMBIO DE SENTIDO?

Publicado por Isaias (4558 intervenciones) el 30/01/2017 18:45:38
Dejame hacer una pruebas....me queda claro que el segundo query, primero construye la sub-consulta y tal vez sea la razon por la que presenta la tercera columna.

¿Si la primera consulta me da el resultado correcto, cual seria la razon para intentar realizar la segunda erronea?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

LEFT OUTER JOIN CAMBIO DE SENTIDO?

Publicado por DALSOM (24 intervenciones) el 16/02/2017 05:06:56
Saludos a todos, y gracias por leer mi post.
Gracias Isaias por responder.

Q2 es el conjunto de filas que espero como valor correcto tanto del Q1 como del Q2.
Segun la definicion del left outer join, incluira todas las filas de la tabla de la izquierda y las que no concuerden o cumplan con el filtro en la tabla de la derecha, arrojara un resultado nulo. Como sucedio en el Q2 y sus resultados.
Los resultados del Q1 Deben ser los resultados del Inner Join.

Si me entiende?

Saludos cordiales desde Santo Domingo :D
Dalsom.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar