php mysql 连接三个表并对相同id的项求和

标签 php mysql

每个人都处于某种水平。我是股票,我需要帮助,因为我是 mysql 新手。

我试图获取订购存储的 Material (建筑物)的总和以及从商店中删除的 Material 的总和,以便我可以获得商店中剩余的 Material 总数,但在加入第三个表后我得到了重复的结果。

这是我的表格:

表:产品

serial name <br>

13  Windows<br><br>
14  Doors<br><br>
15  Ceramic Tiles<br><br>
16  Granite<br><br>

表:order_detail

orderid productid quantity<br>

29  14  170<br><br>
30  15  2000<br><br>
32  15  200<br><br>
31  16  80<br><br>
17  1200    600<br><br>

表:matrequest

id  matid   matname mquantity<br>
1   15  Ceramic Tiles   300<br><br>
2   15  Ceramic Tiles   300<br><br>

这是我的代码:

$query=mysql_query("SELECT a.productid, sum(a.quantity), b.serial, b.name, sum(mquantity) 
      FROM order_detail a 
      left join products b on a.productid = b.serial 
      left join matrequest c on b.serial = c.matid group by b.name")or die(mysql_error());

      while($row=mysql_fetch_assoc($query)){

结果:

ID  Material Name   Order Quantity  Quantity Used   Quantity at Hand<br>
15  Ceramic Tiles   <b>4400 1200    3200</b>    <br><br>

14  Doors       170 0   170<br><br>

16  Granite     80  0   80<br><br>

17  Iron Rods   1200    0   1200<br><br>

假设是

ID  Material Name   Order Quantity  Quantity Used   Quantity at Hand<br>
15  Ceramic Tiles   <b>2200 600 1600</b>    <br><br>

14  Doors       170 0   170<br><br>

16  Granite     80  0   80<br><br>

17  Iron Rods   1200    0   1200 <br><br>

提前感谢您的协助

最佳答案

编辑:进一步评论后的第二次尝试:

SELECT
   a.productid,
   sum(a.quantity),
   b.serial,
   b.name,
   (SELECT SUM(mquantity) FROM matrequest c WHERE c.matid = b.serial)
FROM
   order_detail a 
LEFT JOIN
   products b 
      ON a.productid = b.serial 
GROUP BY
   b.name

参见updated SQL Fiddle

关于php mysql 连接三个表并对相同id的项求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18250097/

相关文章:

mysql - 查询 SQL 中字符串的精确匹配

php - Graphviz 关注一个节点

php - 使用 PHP Magento soap api 登录失败

php - 如何显示包含某些数据的字段的 mysql 查询结果?

java - 将主键作为外键映射到另一个表

php - 在 mysql 中连续比较

php - 使用 simplecart 从本地存储中检索所选餐厅的存储值

javascript - 如何以及使用什么在前端推送通知而无需重新加载

java - Android 返回空字符串 HTTP

javascript - 删除数组中的前缀 y 以将其用于图表的轴