使用JOIN多对多表的SQL查询

时间:2015-02-20 02:37:17

标签: sql

我有三张桌子(简化):

项目(Id,ItemName)

1 Item1
2 Item2
3 Item3

供应商(Id,SupplierName)

1 Suppler1
2 Suppler2

SupplierM2MItem(ItemId,SupplierId) - 外键

1 1
1 2
2 1

我需要让所有供应商获得这样的所有商品:

Item1 Supplier1
Item1 Supplier2
Item2 Supplier1
Item3

我认为实现这一目标并不难,但我无法做到。你能帮忙吗

2 个答案:

答案 0 :(得分:1)

正确的解决方案使用外连接:

SELECT I.Item, S.Supplier
FROM Item I LEFT JOIN
     SupplierM2MItem S2I 
     ON I.Id = S2I.ItemID LEFT JOIN
     Supplier S
     ON S2I.SupplierID = S.ID;

答案 1 :(得分:0)

我认为它是一个内部联接加上一个外部联接。试试这个:

SELECT I.Item, S.Supplier
FROM Supplier S
LEFT OUTER JOIN
SupplierM2MItem S2I 
ON S2I.SupplierID = S.ID
INNER JOIN
Item I
ON I.Id = S2I.ItemID