Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: sexto en 25 Mayo 2012, 13:07 pm



Título: Filas de una tabla con y sin relación
Publicado por: sexto en 25 Mayo 2012, 13:07 pm
A ver como me explico. Es un poco duda de novato y creo que lo he hecho alguna vez, pero no recuerdo como.

Tengo dos tablas, pedidos y facturas.
Tengo que sacar un listado de los pedidos con su número de factura correspondiente, y los que no tienen factura (no existen en la tabla facturas) sacarlos también pero sin el número de factura.
Para ello tengo esto:
Código:
SELECT p.idpedido,idcliente,estado,factura,facturado,fechasalida,f.idfactura FROM pedido p, facturas' . (($abono == true)?'abono':'') . ' f WHERE p.idpedido = f.idpedido AND (estado != "4" OR (estado = "4" AND facturado = "1")) AND fechasalida BETWEEN "' . date('Y-m-d', strtotime($_GET['fechadesde'])) . '" AND "' . date('Y-m-d', strtotime($_GET['fechahasta'])) . '"
El problema está obviamente aquí:
Código:
WHERE p.idpedido = f.idpedido

Eso tiene que estar, pero ¿como puedo decirle que me saque también los que no están en la tabla facturas? Se que se puede, pero no consigo acordarme cómo.

Muchas gracias.


Título: Re: Filas de una tabla con y sin relación
Publicado por: HdM en 25 Mayo 2012, 13:29 pm
Buenas.

http://dev.mysql.com/doc/refman/5.0/es/join.html (http://dev.mysql.com/doc/refman/5.0/es/join.html)

Saludos.


Título: Re: Filas de una tabla con y sin relación
Publicado por: sexto en 25 Mayo 2012, 13:39 pm
Ya pensé en hacerlo con JOIN, pero yo quiero que lleve el orden que le digo, que aunque en la que he puesto no sale se lo pongo mas abajo por PHP...
Y era otra forma mas sencilla.

Gracias.


Título: Re: Filas de una tabla con y sin relación
Publicado por: HdM en 25 Mayo 2012, 14:43 pm
Buenas.

Ya pensé en hacerlo con JOIN, pero yo quiero que lleve el orden que le digo, que aunque en la que he puesto no sale se lo pongo mas abajo por PHP...
Y era otra forma mas sencilla.

Con LEFT JOIN, la consulta no es complicada para nada. Lo del orden al no ponerlo en tu código, no sé a qué te refieres. ¿No puedes utilizar ORDER BY en la misma consulta? Desde luego si quieres relacionar las tablas y que te muestre todos los pedidos, facturados o no, te recomiendo el uso de JOIN.

Saludos.