我们有三个表。

1)产品表

Product_ID
Product_Name


2)Warehouse1_Table

Product_ID
Inventory1


3)Warehouse2_Table

Product_ID
Inventory2




产品ID可能不存在于Warehouse1_Table或Warehouse2_Table中,或在两者中都不存在。

我试图找出一个单一的查询,给我们这样的东西:

Product_ID, Product_Name, TotalStock


如果两个表中都有Product_ID,则TotalStock为Inventory1 + Inventory2。
如果Product_ID在Warehouse1_Table中,则TotalStock为库存1
如果Product_ID在Warehouse2_Table中,则TotalStock为Inventory2
如果Product_ID不在任何Warehouse表中,则TotalStock为0

最佳答案

尝试使用LEFT JOIN,这是一个联接,如果您的交叉表未生成匹配项,则联接不会中断您的查询。然后总结库存,如下所示:

SELECT p.Product_ID, p.Product_Name,
(IFNULL(w1.Inventory1, 0) + ISNULL(w2.Inventory2, 0)) AS TotalStock
FROM `Product_Table` AS p
LEFT JOIN `Warehouse1_Table` AS w1 ON (
    p.Product_ID = w1.Product_ID
) LEFT JOIN `Warehouse2_Table` AS w2 ON (
    p.Product_ID = w2.Product_ID
);


然后,您的结果集应包含“ TotalStock”字段,其中包含合并的库存或任一仓库返回的库存。

关于mysql - 在MySQL中用1个键查询2个以上的表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8516944/

10-11 05:20