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