SQL联接不包括数据

SQL联接不包括数据,sql,join,Sql,Join,假设我有三张桌子: Fruit (Table 1) ------ Apple Orange Pear Banana Produce Store A (Table 2 - 2 columns: Fruit for sale => Price) ------------------------- Apple => 1.00 Orange => 1.50 Pear => 2.00 Produce Store B (Table 3 - 2 columns: Fruit for

假设我有三张桌子:

Fruit (Table 1)
------
Apple
Orange
Pear
Banana

Produce Store A (Table 2 - 2 columns: Fruit for sale => Price)
-------------------------
Apple => 1.00
Orange => 1.50
Pear => 2.00

Produce Store B (Table 3 - 2 columns: Fruit for sale => Price)
------------------------
Apple => 1.10
Pear => 2.50
Banana => 1.00
如果我想用第1列:农产品商店a联合农产品商店B提供的水果集、第2列:农产品商店a的水果价格(如果没有提供水果,则为null)、第3列:农产品商店B的水果价格(如果没有提供水果,则为null)编写一个查询,我将如何加入表格


我面临着一个类似的问题(更复杂的表格),无论我如何尝试,如果“水果”不在“农产品商店a”,而是在“农产品商店b”,它将被排除在外(因为我首先加入农产品商店a)。我甚至编写了一个子查询来生成一个完整的水果列表,然后左键加入农产品商店a,但它仍然在删除a没有提供的水果。有什么想法吗?

关键是使用
左键加入。这将包括左侧表中的列,即使右侧表中没有匹配的行

例如:

select f.name, a.price, b.price
from Fruit f
left join ProduceStoreA a on a.Name = f.Name
left join ProduceStoreB b on b.Name = f.Name
如果在商店a中找不到水果,第二列将为
null
。如果在存储B中找不到,则第三列将为
null
。如果两者都不出售水果,则第二列和第三列都将
null