MySQL - Problema con consulta

 
Vista:

Problema con consulta

Publicado por Eduardo (11 intervenciones) el 31/08/2005 12:40:24
hola, estoy haciendo una consulta a dos tablas que son facturas y clientes. La consulta deberia de mostrarme la fecha de factura, el numero de factura, el dni del cliente, el nombre del cliente y el importe total. El problema que tengo es que la consulta que he hecho solo me muestra las facturas que tienen rellenado el campo dni del cliente y es que existen facturas que no estan rellenados. Se me olvidaba, los campos de facturas son la fecha de factura, el numero de factura, el dni del cliente y el importe total y de la tabla clientes estan el dni del cliente que lo relaciono con la de facturas y el nombre.

A continuacion pongo el codigo de la consulta, haber si alguien me ayuda porque estoy volviendome loco buscando por internet una solucion y no encuentro nada.

select fecha_factura,num_factura,factura.dni_cliente, clientes.nombre,total_factura from factura,clientes where factura.dni_cliente=clientes.dni_cliente and fecha_factura between '11/11/1111' and '31/08/2005' and factura.dni_cliente between ' ' and 'ZZZZZZZZZZZZZZZ'
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con consulta

Publicado por crasho (50 intervenciones) el 04/09/2005 16:10:59
Hola Eduardo:

Esta es la manera que la tienes:

select fecha_factura,num_factura,dni_cliente,nombre,total_factura
from factura,clientes where factura.dni_cliente=clientes.dni_cliente and fecha_factura between '11/11/1111' and '31/08/2005' and factura.dni_cliente between ' ' and 'ZZZZZZZZZZZZZZZ'

cuando haces el from de esta manera

from factura,clientes es un producto cartesiano que sólo te devuelve los registros que se encuentran en ambas tablas, es por ello que aparecen sólo los que tienen DNI asignado.

Ahora la forma de solucionarlo es a través de un left join para que te devuelva aún cuando el DNI esté vacio.

from factura f
left join clientes c on c.DNI=f.DNI
where factura between '11/11/1111' and '31/08/2005' and factura dni_cliente between '' and 'ZZZZZZZZZZZZZZZZ'

Espero te sirva.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar