Php Mysql使用数量之和连接两个表

Php Mysql使用数量之和连接两个表,php,mysql,Php,Mysql,问:我很难在mysqlquery中完成以下任务 任务是获取所有产品(如果产品重复超过其数量的总和),并扣除损耗库存(如果损耗产品重复超过其数量的总和) 我有两张桌子 1) 管理库存 2) 管理浪费 管理库存 =>此表有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 p_id w_qty 1 2 1 4 3 5 管理浪费

问:我很难在
mysql
query中完成以下任务

任务是获取所有产品(如果产品重复超过其数量的总和),并扣除损耗库存(如果损耗产品重复超过其数量的总和)

我有两张桌子

1) 管理库存

2) 管理浪费


管理库存

=>此表有
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
p_id w_qty

1    2
1    4
3    5

管理浪费

=>此表具有管理库存表的
p\u id
(产品id)。它也有许多行与产品重复的

p_id p_name p_qty

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

1    2
1    4
3    5

期望输出


非常感谢。

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

 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
试试上面的代码

由于p_名称始终是唯一的,p_id GROUP_CONCAT()只返回一个名称。

试试这个

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

它的工作

manage_wastage
table
p_id
主键,但您的记录重复了1次您不能选择p_name,因为此列不包括在group by子句中,也不包括在聚合函数中。@TETETE0148 As
p_name
始终与
p_id group_CONCAT()唯一
只返回单个名称。在group by中添加p_名称也正确吗?(我对此很好奇)@tete是的,在pname与p_id是唯一的之前,它也是正确的