从3个表格中选择数据以计算库存水平

时间:2018-12-18 21:37:57

标签: sql inventory-management

我目前正在phpgrid中建立一个清单系统。我有3张桌子-产品,订单,购买。我正在尝试列出产品的所有PartNumber字段以及购买时每个PartNumber收到的Numbers总数以及订单中每个PartNumber收到的NumberShipped总数。

我相信从那里我可以使用phpgrid显示一个虚拟/计算列,该列将从NumberReceived中减去NumberShipped,并为我提供每个PartNumber的当前库存水平。

寻找类似这样的结果

PartNumber   | Received  | Shipped  | (calculated) Qty On Hand
______________________________________________________________
12345        | 20        |  10      |  10
67890        | 40        |  5       |  35

我无法解决如何将所有内容结合在一起以检索所需数据的问题。此SELECT显示一些数据,但不是显示具有正确计算的每个PartNumber。

 "SELECT 
        p.id, 
        sum(p.NumberReceived) AS 'Received', 
        sum(o.NumberShipped) As 'Shipped' 
        FROM purchases p
        INNER JOIN orders o on p.id = o.ProductId
        GROUP BY p.id ", 
    "id", "purchases");

我意识到我需要在其中有PartNumber列,以便列出PartNumber字段的所有数据。因此,我尝试了这一点-我想我已经接近了,但这总是给我一个错误-PHPGRID_ERROR:无法执行查询。错误102

"SELECT 
    prod.id,prod.PartNumber, 
    sum(pur.NumberReceived) AS 'Received', 
    sum(o.NumberShipped) As 'Shipped', 
    FROM products prod
    LEFT JOIN orders o ON prod.PartNumber = o.ProductId
    LEFT JOIN purchases pur ON prod.PartNumber = pur.ProductId", 
"id", "products");

我希望有人能帮助我朝正确的方向发展。谢谢你们!

1 个答案:

答案 0 :(得分:0)

如果要汇总,则需要分组。以下应该工作。如果没有,请发送特定的错误消息。 (在选择块的最后一项之后,您还有一个逗号)

SELECT 
    prod.id,prod.PartNumber, 
    sum(pur.NumberReceived) AS Received, 
    sum(o.NumberShipped) As Shipped 
    FROM products prod
    LEFT JOIN orders o ON prod.PartNumber = o.ProductId
    LEFT JOIN purchases pur ON prod.PartNumber = pur.ProductId"
    GROUP BY prod.id, prod.PartNumber;