0

每个人都处于某种水平。我是股票,我需要帮助,因为我是 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>

提前感谢您的协助

4

1 回答 1

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

查看更新的 SQL Fiddle

于 2013-08-15T12:08:42.860 回答