我目前正在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");
我希望有人能帮助我朝正确的方向发展。谢谢你们!
答案 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;