Tuesday, July 08, 2008

left outer join y el where (borrador)

post left outer join y el where

tengo una tabla t1 y una tabla t2

t1
c1
1
2
3

t2
c1 c2
1 1
2 1
3 1

entonces hago un T1 left outer join T2
on t2.c1 = t2.c1
and t2.c2 = 1
que creen que saldra?

bueno en el left outer join, hace las consultas para cada tabla

1ro para la t2, que trae todos los registros con c2 = 1
Luego procede a hacer el left y nos da
0 null null (no correspondio con ningun valor en T2)
1 1 1
2 2 1
3 3 1

Ahora que paso cuando cambias la condicion t2.c2 = 1, en el where


entonces hago un T1 left outer join T2
on t2.c1 = t2.c1
where t2.c2 = 1

como se puede decir, el left tiene mas prioridad que el where(osea este se realiza al ultimo)
1. realizandose priemro el left tendriamos
t1.c1 t2.c1 t2.c2
0 null null (no correspondio con ningun valor en T2)
1 1 1
2 2 1
3 3 1

2. Luego realizar el where t2.c2 =1, sobre lo anterior
t1.c1 t2.c1 t2.c2
1 1 1
2 2 1
3 3 1

Se filtro el registro que tenia t2.c2 = null, ya que la condicion en el where era t2.c2 = 1

Habra mas cosas sobre estas, espero sea todo, porque ese era uno de las cosas raras que no entendia, espero haberlo entendido bien y si no lo es, y sabes que hay algo mas oculto, hasmelo saber, te lo agradecere de alma =)

bye