私は3つのテーブルを持っています:
製品(p_id、prod_name)、競合他社(c_id、comp_name)、販売(p_id、c_id、price)。
それで、私がデータを持っているとしましょう:
(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
問題は、テーブル販売が製品と競合他社の間の唯一の反発であるということです。また、テーブル販売には、製品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でそれを行うにはどうすればよいですか?