Ver Mensaje Individual
  #6 (permalink)  
Antiguo 09/07/2012, 12:08
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: consulta relacionada con posibles registros inexistentes

Cita:
mi problema radica en el WHERE ya que estoy poniendo como condicion a un campo de un registro que no siempre existe por eso aun con tu sentencia me debuelve solo aquellos registros existentes...
La condición en el WHERE que necesitas para obtener un dato que puede ser NULL es muy simple. Lo que debes recordar es que NULL no es un dato, sino un estado, por lo que no sirve usar operadores lógicos (=, <, >, ETC). Para eso se usa el IS NULL o IS NOT NULL:
Código MySQL:
Ver original
  1.     P.ID,
  2.     P.Nombre,
  3.     IFNULL(V.Cantidad, 0) Cantidad
  4.     producto P
  5.     LEFT JOIN venta V ON P.ID = V.ID
  6.     V.IDPedido='2' OR V.Cantidad IS NULL;
Aunque en el caso específico del ejemplo, el error es que estás filtrando el ID del pedido, que corresponde a la tabla de VENTA, y si existe en esa tabla, no puede ser NULL... es una imposibilidad lógica (a menos que puedas no ingresar el valor en ese campo cuando registrs una venta), por cuanto una venta no puede ser de cero productos.
En ese caso, si lo que quieres es obtener aquellos productos de los que no se realizaron ventas, la consulta sería:
Código MySQL:
Ver original
  1.     P.ID,
  2.     P.Nombre,
  3.     IFNULL(V.Cantidad, 0) Cantidad
  4.     producto P
  5.     LEFT JOIN venta V ON P.ID = V.ID
  6.     V.Cantidad IS NULL;
Nota: El IFNULL se usa para evitar que aparezca en el resultado una columna con NULL. No tiene mucha utilidad en ningún otro caso, y por supuesto no lo tiene en el WHERE. Para eso se usa IS NULL o IS NOT NULL, como dije.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)