首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql用数量之和连接两个表

Mysql用数量之和连接两个表
EN

Stack Overflow用户
提问于 2017-07-20 11:15:21
回答 3查看 366关注 0票数 0

问:我很难在mysql查询中完成以下任务。

任务是获取所有产品(如果产品是重复的,它的qty__),并扣除浪费库存(如果浪费产品是重复的qty__)。

我有两张桌子,

1) manage_stock 2) manage_wastage

manage_stock

=>这个表有p_id(Product )和许多带有产品复制的行。

代码语言:javascript
复制
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(Product )。它也是许多行与产品复制的。

代码语言:javascript
复制
p_id w_qty

1    2
1    4
3    5

期望输出

代码语言:javascript
复制
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

非常感谢。

EN

回答 3

Stack Overflow用户

发布于 2017-07-20 11:22:46

您只需计算库存数量与损耗之间的差额即可。

代码语言:javascript
复制
 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
票数 0
EN

Stack Overflow用户

发布于 2017-07-20 11:24:01

代码语言:javascript
复制
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()只返回单个名称。

票数 0
EN

Stack Overflow用户

发布于 2017-07-20 11:46:11

试试这个

代码语言:javascript
复制
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

它的工作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45213102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档