问:我在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
非常感谢。
答案 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
它的工作