NOT IN con subconsulta me devuelve cero filas
Benjamín R.
Nivel 3 ·
Benjamín R.
Nivel 3 ·
eduardo S.
Nivel 3 ·
Casi seguro hay algún producto_id NULL en ventas. Si la lista del NOT IN tiene un NULL, la condición nunca da verdadero: id <> NULL es desconocido, y todo el NOT IN termina siendo desconocido o falso.
Facundo F.
Nivel 3 ·
Solución rápida: agregá WHERE producto_id IS NOT NULL dentro de la subconsulta.
Damián R.
Nivel 3 ·
Mejor todavía, usá NOT EXISTS, que no tiene ese problema: SELECT * FROM productos p WHERE NOT EXISTS (SELECT 1 FROM ventas v WHERE v.producto_id = p.id);
Benjamín R.
Nivel 3 ·
Era eso! Había ventas viejas con producto_id NULL. Cambié a NOT EXISTS y anda.
yorman R.
Nivel 3 ·
Y de paso fijate por qué hay ventas sin producto. Eso huele a que falta un NOT NULL o una clave foránea.