我有三张桌子:
产品(p_id,prod_name),竞争对手(c_id,comp_name),销售(p_id,c_id,价格)。
所以假设我有数据:
(producs table)
p_id | prod_name
1 | product1
2 | product2
(competitors table)
c_id | comp_name
1 | competitor1
(sells table)
p_id | c_id | price
1 | 1 | 1.56
在某处使用 c_id = 1 ,我想检索:
prod_name | price
product1 | 1.56
product2 | NULL
问题是餐桌销售是产品和竞争对手之间唯一的关系。并且 table sells 可能没有包含产品 id 和竞争对手 id 的行。在这种情况下,我希望它返回 null 作为价格。简而言之,我想返回给定竞争对手的所有产品(假设 comp_id = 1),如果表中不存在该行,则返回价格或 null 销售。
我试过这个,但它没有用,因为它没有返回 NULL 价格:
SELECT prod_name, price
FROM products
LEFT JOIN sells ON products.p_id = sells.p_id
LEFT JOIN competitors ON sells.c_id = competitors.c_id
WHERE competitors.c_id = 1
我怎样才能在 SQL 中做到这一点?