我有三个表(Stores,Item & StoreInv),我正在尝试进行一个包含Stores & Items中所有记录的连接,即使StoreInv中没有匹配的记录。
存储表:
StoreId
-------
Store1
Store2
Store3
项目表:
ItemId
-------
A
B
C
StoreInv表(仅包含商店中有库存的商品的记录):
ItemId StoreId Qty
------- ------- ---
A Store1 6
B Store1 2
B Store2 4
预期输出:
StoreId ItemId Qty
------- ------ ---
Store1 A 6
Store2 A 0 (or null)
Store3 A 0 (or null)
Store1 B 2
Store2 B 4
Store3 B 0 (or null)
Store1 C 0 (or null)
Store2 C 0 (or null)
Store3 C 0 (or null)
我尝试过的:
SELECT str.StoreId, itm.ItemId, inv.Qty
FROM Item itm
LEFT JOIN StoreInv inv ON inv.ItemId = itm.ItemId
RIGHT JOIN Stores str on str.StoreId = inv.StoreId
结果(不是我想要的):
StoreId ItemId Qty
------- ------ ---
Store1 A 6
Store1 B 2
Store2 B 4
Store3 null null
1条答案
按热度按时间8dtrkrch1#
你应该
CROSS JOIN
Stores
和Inv
表得到所有可能的组合,然后LEFT JOIN
StoreInv
表得到每一个的数量。DEMO