FULL JOIN

07/04/2008 - 23:53 por Penta | Informe spam
Estimados.
Utilizo SS2000 SP4
Tengo una duda sobre el funcionamiento del FULL JOIN

create table T1
(
ID int,
ano int
)

create table T2
(
ID int,
ano int
)

insert into t1 values (1,2008)
insert into t2 values (2,2007)
insert into t2 values (3,2008)

En un principio pense que con esta query me daria todos los registros
del 2008 de ambas tablas
select * from t1 FULL join t2
on t1.id=t2.id
Where t1.ano 08

Pudiendo comprobar que NO es asi, y con la siguiente consulta si lo
hace

select * from t1 FULL join t2
on t1.id=t2.id
Where t1.ano 08 or t2.ano 08

Entiendo porque la 2da query me trae los datos, pero pense que al FULL
JOIN no tenia que especificarle el or

Atte.
Penta.
 

Leer las respuestas

#1 Maxi Accotto
08/04/2008 - 01:50 | Informe spam
Hola Estimado, creo que tiene un concepto erroneo.
El full es equivalente a traer de ambos lados y eso funciona.
Con su mismo ejemplo ejecute esto:


select * from t1 FULL join t2
on t1.id=t2.id

Usted vera que la union es por id verdad? pero trae 3 registros cuando en
realidad no hay esa combinacion ya que no hay combinacion entre ID.
Usted luego pone un filtro y ese filtro si lo hace solo sobre una tabla y a
la otra no le indica null o bien como usted hizo entonces es logico el
filtrado y los resultados que le esta mostrando.

No se si lo confundi mas o lo ayude :-S


Microsoft MVP SQLServer
www.sqltotalconsulting.com
-

"Penta" escribió en el mensaje de
noticias:
Estimados.
Utilizo SS2000 SP4
Tengo una duda sobre el funcionamiento del FULL JOIN

create table T1
(
ID int,
ano int
)

create table T2
(
ID int,
ano int
)

insert into t1 values (1,2008)
insert into t2 values (2,2007)
insert into t2 values (3,2008)

En un principio pense que con esta query me daria todos los registros
del 2008 de ambas tablas
select * from t1 FULL join t2
on t1.id=t2.id
Where t1.ano 08

Pudiendo comprobar que NO es asi, y con la siguiente consulta si lo
hace

select * from t1 FULL join t2
on t1.id=t2.id
Where t1.ano 08 or t2.ano 08

Entiendo porque la 2da query me trae los datos, pero pense que al FULL
JOIN no tenia que especificarle el or

Atte.
Penta.


Preguntas similares