tengo un expediente X
tengo dos tablas A y B
en cada una de ellas tengo varios campos, el comun es CODEMPLEADO.
Tengo una consulta de union con un LEFT JOIN que me devuelve registros NULL
para la parte B.
Select A.CAMPO1, B.CAMPO2
FROM A JOIN B ON ( A.CODEMPLEADO=B.CODEMPLEADO)
Hasta aqui es todo corrrecto.
Lo que quiero hacer es saber/predecir los registros que no cumpliran el LEFT
JOIN de manera que puedo tratar esos registros de otra manera. Para ello
habia pensado en romper la consulta en 2, los que cumplen el criterio y los
que no lo cumplen, y luego unirlas.
teniendo en cuenta que si hago un
SELECT DISTINCT CODEMPLEADO FROM A --> Me devuelve 100 registros
SELECT DISTINCT CODEMPLEADO FROM B --> Me devuelve 70 registros
esta claro que 30 registros de la tabla A no tienen coincidencia en la tabla
B
Para saber cuales seran esos 30 registros hice la siguiente consulta
SELECT A.CAMPO1, A.CODEMPLEADO
FROM A
WHERE A.CODEMPLEADO NOT IN ( SELECT B.CODEMPLEADO FROM B )
y lo curioso es que me devuelve 0 registros.
He probado tambien con NOT EXISTS y lo mismo.. 0 registros.
Los campos CODEMPLEADO estan presentes en las dos tablas, con el mismo tipo
de datos y con un indice para cada uno de ellos...
No se que puede estar pasando.. nunca me habia encontrado con un NOT IN que
no me devolveria los datos correctamente...
Muchas gracias por la ayuda
Leer las respuestas