MySql-如何通过连接三个表和过滤器来获得特定列的总和
有三张桌子MySql-如何通过连接三个表和过滤器来获得特定列的总和,mysql,Mysql,有三张桌子 库存-其中包含库存信息 订单-包含订单的存储信息 OrderParts-包含与订单关联的部件 库存表 订单表 订单零件表 需要生成低于预期的报告 查询试图获得上述结果 SELECT inventory.partNumber, inventory.storeId, SUM(parts.quantity) as orderedQuantity, inventory.availableQuantity FROM (SELECT *, SU
SELECT
inventory.partNumber, inventory.storeId, SUM(parts.quantity) as orderedQuantity,
inventory.availableQuantity
FROM
(SELECT *, SUM(availableQuantity) AS availQty
FROM
inventory AS inventory
GROUP BY storeId , partNumber) AS inventory
LEFT JOIN
(SELECT
*
FROM
order
GROUP BY storeId) AS order ON order.storeId = inventory.storeId
LEFT JOIN
(SELECT
*
FROM
orderParts) AS parts ON inventory.partNumber = parts.partNumbe
where inventory.partNumber in ("A1234", "B1234");
GROUP BY order.storeId , parts.partNumber
正在获取订购数量的null
请告诉我如何获得预期的累计订购数量。提前感谢。一个相对简单的方法是
union all
和聚合:
select storeid, partnumber,
sum(availableqty) as availableqty,
sum(orderedqty) as orderedqty
from (select storeid, partnumber, availableqty, 0 as orderedqty
from inventory
union all
select o.storeid, op.partnumber, 0, op.quantity
from orderparts op join
orders o
on op.ordernumber = o.ordernumber
) sp
group by storeid, partnumber;
您的问题没有明确描述过滤器,但您可以在子查询或外部查询中添加过滤器。仅标记您使用的数据库。