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:
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:
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.