Некоторые базы данных (такие как MS Access и MySQL) не поддерживают FULL OUTER JOIN
.
Однако FULL OUTER JOIN
требуется редко - и почти никогда, когда вы используете ключи, определенные между таблицами. Хорошо структурированные базы данных имеют ключи с соответствующими значениями.
Я подозреваю, что INNER JOIN
делает то, что вы хотите:
SELECT . . . -- list out the columns you want
FROM inventory i INNER JOIN
cities c
ON i.city_id = c.city_id
WHERE i.is_enabled = 1
ORDER BY i.inventory_id DESC
LIMIT 10;
В этом запросе предполагается, что строки inventory
имеют действительный city_id
. Если некоторые из них NULL
(допустимое, несоответствующее значение), вы можете использовать LEFT JOIN
.
Некоторые другие заметки:
- Перечислите столбцы, которые вы хотите явно. В частности, дублированные имена столбцов могут быть проблематичными.
- Используйте псевдонимы таблиц, чтобы легче было писать и читать запрос.
- Укажите все имена столбцов. Я предполагаю, что
is_enabled
происходит от inventory
. Я не должен был догадываться.
- Не ставьте одинарные кавычки вокруг числовых констант. Я предполагаю, что
is_enabled
это число, а не строка.