php mysql连接三个表和相同id的sum项

时间:2013-08-15 09:41:53

标签: php mysql

每个人都处于某种程度。我有库存,我需要帮助,因为我是mysql的新手。

我试图获取要存储的材料(建筑物)的总和以及从商店中移除材料的总和,这样我就可以在商店中获得剩余材料,但是在加入第三个表后我得到了重复的结果。

以下是我的表格:

表:产品

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>

提前感谢您协助

1 个答案:

答案 0 :(得分:0)

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

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