Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/05/2010, 09:03
sencev
 
Fecha de Ingreso: septiembre-2007
Ubicación: Argentina
Mensajes: 29
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Consulta usando 2 tablas + campo calculado

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 original
  1. SELECT pedidos.id
  2.      , clientes.nombre
  3.      , SUM( articulos.precio ) AS total
  4.   FROM pedidos
  5. INNER JOIN clientes
  6.         ON clientes.id = pedidos.id_clientes
  7. LEFT JOIN articulos
  8.        ON articulos.id_pedidos = pedidos.id
  9. 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
  1. ( SUM( articulos.precio ) + iva )  AS total

espero que te sirva.

Saludos