Hola, no entendi bien como tenes hecha la db.. pero te dejo un ejemplo muy generico de como funcionaria con la estructura dada, hechale un vistazo y si es necesario modificala a tu necesidad
Tabla Clientes
-id
-nombre
Tabla Pedidos
-id
-id_clientes
Tabla Articulos
-id
-id_pedidos
-precio
Una query para obtener un listado de pedidos con su respectivo cliente y precio total de los articulos dentro, seria algo asi:
Código SQL:
Ver originalSELECT pedidos.id
, clientes.nombre
, SUM( articulos.precio ) AS total
FROM pedidos
INNER JOIN clientes
ON clientes.id = pedidos.id_clientes
LEFT JOIN articulos
ON articulos.id_pedidos = pedidos.id
GROUP BY pedidos.id
Explicacion:
El INNER JOIN lo que hace es unir la tabla de clientes, al ser un INNER, si el id_clientes de la tabla pedidos no existe en la tabla clientes, no va a devolver ese pedido.
El LEFT JOIN a la tabla articulos, une todos los registros de articulos asociados a ese pedido. Al ser un LEFT, si el pedido no tiene ningun articulo, de todas formas va a devolver el pedido, pero con precio = 0
Es muy importante el GROUP BY, ya que sin el, el resultado seria una fila por cada articulo, no por cada pedido.
Si en algun momento necesitas agregarle el IVA o algo de eso, podes jugar con las operaciones que MySQL te permite hacer, por ejemplo:
Código SQL:
Ver original( SUM( articulos.precio ) + iva ) AS total
espero que te sirva.
Saludos