Mysql连接两个表,数量加

时间:2017-07-20 11:15:22

标签: php mysql

问:我在mysql查询中执行以下任务很麻烦。

任务是获取所有产品(如果产品重复总和数量并扣除浪费库存(如果浪费产品重复总和 数量

我有两张桌子,

  

1)manage_stock

     

2)manage_wastage

manage_stock

=>此表格包含p_id(产品ID)和许多包含产品重复的行。

p_id p_name p_qty

1    Pro-1  10
2    Pro-2  15
3    Pro-3  8
1    Pro-1  15

manage_wastage

=>此表格具有 manage_stock 表格的p_id(产品ID)。它也是许多产品重复的行。

p_id w_qty

1    2
1    4
3    5

所需的输出

p_id p_name p_qty w_qty final_qty

1    Pro-1  20    6     14
2    Pro-2  15    0     15
3    Pro-3  8     5     3

非常感谢。

3 个答案:

答案 0 :(得分:0)

您只需计算库存数量与浪费之间的差异

 SELECT s.p_id, s.p_name, SUM(p_qty), SUM(w_qty), SUM(p_qty) - SUM(w_qty) as final_qty 
    FROM manage_stock s
    LEFT OUTER JOIN manage_wastage w
    ON s.p_id = w.p_id
    GROUP BY s.p_id, s.p_name

答案 1 :(得分:0)

SELECT ms.p_id ,GROUP_CONCAT(ms.p_name)p_name ,SUM(ms.p_qty) p_qty ,SUM(mw.w_qty) w_qty,SUM(ms.p_qty)-SUM(mw.w_qty) final_qty FROM manage_stock ms
INNER JOIN manage_wastage mw on ms.p_id =mw.p_id 
GROUP BY ms.p_id 

尝试以上代码。

由于 p_name 始终与p_id GROUP_CONCAT()唯一,因此只返回单个名称。

答案 2 :(得分:0)

尝试这个

SELECT s.p_id, s.p_name, SUM(p_qty),SUM(ifnull(w_qty, 0)),SUM(p_qty - ifnull(w_qty, 0)) as total
    FROM manage_stock s
    left outer JOIN manage_wastage w
    ON s.p_id = w.p_id 
    GROUP BY s.p_name

它的工作