Consulta con Left Join

19/11/2003 - 01:16 por Fernando | Informe spam
Tengo una tabla1 con un atributo cod1 (string) y otra tabla2 con cod2
(string), clave (string) y codprov (int). Yo quiero tomar todos los
registros que estan en tabla2 y no estan tabla1 pero que clave <> '' y
codproc = 10.

Hice 2 consultas que parecen iguales pero me arrojan resultados distintos
????

Select * from tabla1
where cod2 not in (Select cod1 from tabla1) and
clave <> '' and codproc = 10

Select t2.cod2, t2.clave, t2.codprov
from tabla2 t2
LEFT JOIN tabla1 t1 ON t1.cod1 = t2.cod2
where t2.clave <> '' and t2.codproc = 10

Alguien puede ver la diferencia.

Gracias de antemano
Saludos
Fernando
 

Leer las respuestas

#1 Maximiliano Damian Accotto
19/11/2003 - 01:29 | Informe spam
estimado:

a ver!! la primer consulta estas haciendo las q no estan (y es correcto)
pero si haces un Left join se uniran las 2 tablas trayendo todos los
registros de la izquierda, es posible q al traer esos registros tengas nulos
porque no hay clave en la otra tabla q coincida (por eso lo del LEFT o
RIGHT)

asi q deberias agregarle al where ademas que traiga las nulas (son las q
no estan digamos)

Select t2.cod2, t2.clave, t2.codprov
from tabla2 t2
LEFT JOIN tabla1 t1 ON t1.cod1 = t2.cod2
where t2.clave <> '' and t2.codproc = 10 and

t2.cod2 is null

se entiende?



Accotto Maximiliano Damian
Fundicion San Cayetano S.A.
Buenos Aires Argentina

Gerente de Sistemas y Tecnologia
()

"Fernando" escribió en el mensaje
news:%23%
Tengo una tabla1 con un atributo cod1 (string) y otra tabla2 con cod2
(string), clave (string) y codprov (int). Yo quiero tomar todos los
registros que estan en tabla2 y no estan tabla1 pero que clave <> '' y
codproc = 10.

Hice 2 consultas que parecen iguales pero me arrojan resultados distintos
????

Select * from tabla1
where cod2 not in (Select cod1 from tabla1) and
clave <> '' and codproc = 10

Select t2.cod2, t2.clave, t2.codprov
from tabla2 t2
LEFT JOIN tabla1 t1 ON t1.cod1 = t2.cod2
where t2.clave <> '' and t2.codproc = 10

Alguien puede ver la diferencia.

Gracias de antemano
Saludos
Fernando


Preguntas similares