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:
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í:
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.
Buenas.
http://dev.mysql.com/doc/refman/5.0/es/join.html (http://dev.mysql.com/doc/refman/5.0/es/join.html)
Saludos.
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.
Buenas.
Cita de: 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.
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.