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

Muchisimas gracias Quim. Sobretodo por la explicación de las medias. Voy a ver si me está dando bien.

Me daba algunos errores como los nombres de las tablas, ventas por venta y poco más, los arreglé, y ahora me dice.

No se encuentra v.fecha

Aquí con las pequeñas correcciones:
Código MySQL:
Ver original
  1. SELECT sbc.codigo, sbc.nombre,
  2.                 ROUND(AVG(sbc.precioVenta), 2) 'Media Ventas',
  3.                 ROUND(AVG(sbc.precioCompra), 2) 'Media Compras',
  4.                 SUM(IF(MONTH(v.fecha)=1, sbc.CantidadVentas, 0)) 'EneroV',
  5.                 SUM(IF(MONTH(v.fecha)=1, sbc.CantidadCompras, 0)) 'EneroC',
  6.                 SUM(IF(MONTH(v.fecha)=2, sbc.CantidadVentas, 0)) 'FebreroV',
  7.                 SUM(IF(MONTH(v.fecha)=2, sbc.CantidadCompras, 0)) 'FebreroC',
  8.                 SUM(IF(MONTH(v.fecha)=3, sbc.CantidadVentas, 0)) 'MarzoV',
  9.                 SUM(IF(MONTH(v.fecha)=3, sbc.CantidadCompras, 0)) 'MarzoC',
  10.                 SUM(IF(MONTH(v.fecha)=4, sbc.CantidadVentas, 0)) 'AbrilV',
  11.                 SUM(IF(MONTH(v.fecha)=4, sbc.CantidadCompras, 0)) 'AbrilC',
  12.                 SUM(IF(MONTH(v.fecha)=5, sbc.CantidadVentas, 0)) 'MayoV',
  13.                 SUM(IF(MONTH(v.fecha)=5, sbc.CantidadCompras, 0)) 'MayoC',
  14.                 SUM(IF(MONTH(v.fecha)=6, sbc.CantidadVentas, 0)) 'JunioV',
  15.                 SUM(IF(MONTH(v.fecha)=6, sbc.CantidadCompras, 0)) 'JunioC',
  16.                 SUM(IF(MONTH(v.fecha)=7, sbc.CantidadVentas, 0)) 'JulioV',
  17.                 SUM(IF(MONTH(v.fecha)=7, sbc.CantidadCompras, 0)) 'JulioC',
  18.                 SUM(IF(MONTH(v.fecha)=8, sbc.CantidadVentas, 0)) 'AgostoV',
  19.                 SUM(IF(MONTH(v.fecha)=8, sbc.CantidadCompras, 0)) 'AgostoC',
  20.                 SUM(IF(MONTH(v.fecha)=9, sbc.CantidadVentas, 0)) 'SeptiembreV',
  21.                 SUM(IF(MONTH(v.fecha)=9, sbc.CantidadCompras, 0)) 'SeptiembreC',
  22.                 SUM(IF(MONTH(v.fecha)=10, sbc.CantidadVentas, 0)) 'OctubreV',
  23.                 SUM(IF(MONTH(v.fecha)=10, sbc.CantidadCompras, 0)) 'OctubreC',
  24.                 SUM(IF(MONTH(v.fecha)=11, sbc.CantidadVentas, 0)) 'NoviembreV',
  25.                 SUM(IF(MONTH(v.fecha)=11, sbc.CantidadCompras, 0)) 'NoviembreC',
  26.                 SUM(IF(MONTH(v.fecha)=12, sbc.CantidadVentas, 0)) 'DiciembreV',
  27.                 SUM(IF(MONTH(v.fecha)=12, sbc.CantidadCompras, 0)) 'DiciembreC',
  28.                 SUM(sbc.CantidadVentas) 'Total Ventas',
  29.                 SUM(sbc.CantidadCompras) 'Total Compras'
  30. SELECT a1.codigo, a1.nombre,
  31.              c.precio precioCompra,
  32.              NULL as precioVenta,
  33.              c.fecha,
  34.              c.cantidad as "CantidadCompras",
  35.              0 as "CantidadVentas"
  36. FROM articulo a1 INNER JOIN compra c ON a1.claart = c.claart
  37. WHERE YEAR(c.fecha)=2012
  38. SELECT a2.codigo, a2.nombre,
  39.              NULL as precioCompra,
  40.              v.precio as precioVenta,
  41.              v.fecha,
  42.              0 as "CantidadCompras",
  43.              v.cantidad as "CantidadVentas"
  44. FROM articulo a2 INNER JOIN venta v ON a2.claart = v.claart
  45. WHERE YEAR(v.fecha)=2012) as Sbc
  46. GROUP BY sbc.codigo

No veo el problema la verdad porque la consulta me parece complejísima y no entiendo ya lo de FROM (consultas varias)

Efectivamente así me da mal la media tal y como tú decías ya que la cantidad no entra en juego.

Última edición por alyciashape; 16/01/2013 a las 09:47