Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/01/2013, 06:27
alyciashape
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años, 6 meses
Puntos: 58
Compras y Ventas en la misma consulta

Tengo estas tablas.
articulo
claart (clave primaria)
nombre (varchar)

venta
id_venta (clave primaria)
claart (indice)
precio (float)
cantidad (int)
fecha (date)

empresa
claemp (clave primaria)
nomemp (varchar)

Y también la de compras que es exactamente igual a la de venta.

Tengo esta consulta para sacar las ventas y verlo por mes:
Código MySQL:
Ver original
  1. SELECT a.codigo, a.nombre,
  2.                 ROUND(AVG(v.precio), 2) 'Media Ventas',
  3.                 SUM(IF(month(v.fecha)=1, v.cantidad, 0)) 'Enero',
  4.                 SUM(IF(month(v.fecha)=2, v.cantidad, 0)) 'Febrero',
  5.                 SUM(IF(month(v.fecha)=3, v.cantidad, 0)) 'Marzo',
  6.                 SUM(IF(month(v.fecha)=4, v.cantidad, 0)) 'Abril',
  7.                 SUM(IF(month(v.fecha)=5, v.cantidad, 0)) 'Mayo',
  8.                 SUM(IF(month(v.fecha)=6, v.cantidad, 0)) 'Junio',
  9.                 SUM(IF(month(v.fecha)=7, v.cantidad, 0)) 'Julio',
  10.                 SUM(IF(month(v.fecha)=8, v.cantidad, 0)) 'Agosto',
  11.                 SUM(IF(month(v.fecha)=9, v.cantidad, 0)) 'Septiembre',
  12.                 SUM(IF(month(v.fecha)=10, v.cantidad, 0)) 'Octubre',
  13.                 SUM(IF(month(v.fecha)=11, v.cantidad, 0)) 'Noviembre',
  14.                 SUM(IF(month(v.fecha)=12, v.cantidad, 0)) 'Diciembre',
  15.                 SUM(v.cantidad) 'Total Ventas'
  16.                 FROM articulo a INNER JOIN venta v ON a.claart = v.claart
  17.                 WHERE year(fecha)=2012
  18.                 GROUP BY codigo

Pero además quería añadir las compras en la misma consulta si es que hay alguna forma y no lo consigo. O la base de datos se queda congelada un rato hasta que me dice que que el SQL "Has gone away" o me da error.

Las compras son lo mismo cambiando la tabla venta por compra. Exactamente igual.

Y para rizar más el rizo ademas estas compras y ventas tienen una "claemp" (clave empresa) y aunque serían muchísimas columnas para comparar datos sería mucho más cómodo así que tendría que quedar algo así como:

claart | Media precio Compras | Compras Enero Empresa A | Compras Enero Empresa B

¿Es esto viable o es pedir demasiado a la bd?

Última edición por gnzsoloyo; 16/01/2013 a las 06:46