У меня есть три таблицы в моей базе данных, к которым я хочу присоединиться, если поле соединения в таблице 1 не равно нулю. Если оно пустое, я хочу получить только результаты таблицы 1.
Table1
----------------------
id | name | table2_id|
----------------------
1 John 1
2 Frank 1
3 Mary 2
4 Susan null
Table2
----------------------
id | City | table3_id|
----------------------
1 Berlin 2
2 Paris 3
3 Rome 1
3 Oslo 1
Table3
-------------------------------
id | title | description |
-------------------------------
1 Great place Some tekst
2 Fun town Some other text
3 Don't go More text
Я использую этот запрос:
SELECT a.name, b.city, c.title, c.description
FROM table1 AS a
LEFT JOIN table2 AS b ON b.id = a.table2_id
LEFT JOIN table3 AS c ON c.id = b.table3_id
WHERE a.id = 1
Это прекрасно работает, пока table1 имеет table2_id. В случае с Джоном он возвращает
John, Berlin, Great Place, Some text
Но в случае с Сьюзен table2_id равен нулю, поэтому он возвращает пустой результат. Но я хочу получить «Сьюзен» в результате.