Аналогичный вопрос здесь, но это немного другое...
У меня есть две таблицы, к которым я хочу присоединиться:
location
---------------------------
| id | city | state_id |
---------------------------
| 1 | Denver | 6 |
| 2 | Phoenix | 2 |
| 3 | Seattle | NULL |
---------------------------
state
-------------------
| id | name |
-------------------
| 1 | Alabama |
| 2 | Alaska |
| 3 | Arizona |
| 4 | Arkansas |
| 5 | California |
| 6 | Colorado |
-------------------
SELECT
location.id,
location.city,
state.name
FROM
location
JOIN
state ON state.id = location.state_id;
Однако в случае, когда location.state_id
оказывается NULL
(возможно, человек, вводящий данные, забыл выбрать состояние), запрос не вернул результат, но это не означает, что местоположение не имеет значения ' t существует.
Как мне обойти эту проблему и каким-то образом отобразить все местоположения, хотя state_id
может быть NULL
?
Используйте LEFT OUTER JOIN
SELECT
location.id,
location.city,
state.name
FROM
location
LEFT OUTER JOIN
state ON state.id = location.state_id;