mysql group by和join问题

时间:2014-04-27 13:52:19

标签: mysql sql

我想知道我的总购买量balace。 我有product_stock表和product_purchase_item表。

Product stock table

product_stock_id(int PK)
product_id(int)
product_size(int)
product_size_quantity(int)


Product purchase item

item_id(int PK)
product_id(int)
product_size(int)
pr_pur_cost_price(douple)
quantity

time_create(timestamp)

请注意product_sizeproduct_id相同,product_stock.product_size_quantity计算每种产品和尺寸的总数量。但是我的product_stock表只存储了同一个product_id和product_size的一行(我使用了库存表的触发器)。例如,我三次购买了一个产品。

product_purchase_item table show


item_id product_id product_size pr_pur_cost quantity time_create
24      160        1            200         1        2013-09-21 20:18:55
502     160        1            150         4        2014-04-27 15:24:11
503     160        4            180         2        2014-04-27 18:54:45
404     100        2            200         1        2014-04-27 18:54:45   

product_stock` table show

stock_id product_id product_size product_size_quantity
17       160        1            5       
337      160        4            2  
331      100        2            1             

最后,我想要一个包含product_stock表格的表格数据 平均成本价格为product_idproduct_size 我需要查询中的这类数据

product_id product_size product_size_quantity average_cost
160        1            5                      175    
160        4            2                      180
100        2            1                      200

此处,第1行显示175 average_cost,因为160- product_id和1 - product_size包含总pr_pur_cost quantity为350.我除以2因为2行 我该怎么做。我尝试使用group byjoin。但我不能。我试着像

select 
    avg(i.pr_pur_cost_price) as cost,s.product_size,s.product_id  
from 
    product_stock as s 
left join 
    product_purchase_item as i
on 
    i.product_id=s.product_id 
and 
    i.product_size=s.product_size 
group by 
    i.product_size 

但它不起作用

1 个答案:

答案 0 :(得分:1)

这样的东西
SELECT product_id, 
       product_size, 
       SUM(quantity) product_size_quantity, 
       AVG(pr_pur_cost)average_cost
FROM product_purchase_item
GROUP BY product_id, product_size

SQL Fiddle DEMO 如果您真的必须加入主表,可以试试

SELECT product_stock.product_id, 
       product_stock.product_size, 
       product_stock.product_size_quantity, 
       AVG(pr_pur_cost)average_cost
FROM product_stock INNER JOIN
     product_purchase_item 
ON  product_stock.product_id = product_purchase_item.product_id
AND product_stock.product_size = product_purchase_item.product_size
GROUP BY
   product_stock.product_id, 
   product_stock.product_size

SQL Fiddle DEMO