問題:
SQL ステートメントの条件に基づいてテーブルを結合する方法を理解しようとしています。Google、SO、さまざまな Web サイト、および MYSQL マニュアルを 1 時間かけて検索しましたが、やりたいことの正しい構文が見つかりません。
作業しようとしている正確なクエリを投稿することはできませんが、簡単にするために簡略化されたバージョンを投稿します。
シナリオ:
a
= person テーブル、b
= address テーブル、c
= car テーブルの 3 つのテーブルがあるとします。
人は常に住所に住んでいるため、テーブルは常にテーブルに結合されますが、車を持つことはオプションであるため、「car_id」フィールドの値が0より大きい場合にのみテーブルにb
結合する必要があります。a
c
a
クエリ:
SELECT a.firstname, a.lastname, a.gender, a.address_id, b.address_firstline, b_address_secondline, b.postcode, c.car_manufacturer, c.car_model
FROM a
INNER JOIN b ON b.id = a.address_id
INNER JOIN c ON c.id = a.car_id AND a.car_id > 0
WHERE a.id = 1
ID が 1 の人は車を所有しているため、上記のクエリは正常に実行されます。ただし、id が 2 の人物に対してクエリを実行すると、彼女は車を所有していないため、クエリは 0 行を返します。
この 2 番目の JOIN をオプションにするにはどうすればよいですか? IF ELSE ステートメントを使用してみましたが、常に構文エラーが発生します。誰かが私をここで正しい方向に向けることができますか? 前もって感謝します