我们有三个表。
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/