У меня есть 3 стола: Products
,, Properties
. Мне нужно получить все продукты, которые не имеют «Property B». Таблицы:Получить записи, которые не имеют связи
# Products # Join table # Properties
+----+-----------+ +------------+-------------+ +-------------+---------------+
| id | name | | product_id | property_id | | property_id | property_name |
+----+-----------+ +------------+-------------+ +-------------+---------------+
| 1 | Product 1 | | 1 | 1 | | 1 | Propeprty A |
| 2 | Product 2 | | 1 | 2 | | 2 | Propeprty B |
| 3 | Product 3 | | 2 | 1 | +-------------+---------------+
+----+-----------+ | 2 | 2 |
| 3 | 1 |
+------------+-------------+
В данном случае Я ожидаю, что продукт 3 должен быть возвращен.
Возможно ли получить все необходимые продукты в пределах одного запроса одного db? Какой наименьший запрос можно достичь?
Отредактировано. Запросы с подзапросами рассмотрены bad.
Это просто «ol» не будет работать. Продукты.Идентификатор никогда не будет NULL - так как это таблица, в которой находится предложение FROM, и нет НИКАКИХ ссылок RIGHT/FULL. –
Марк, ты прав. Ответ Lester имеет опечатку: в строке 5 она должна быть 'Join_Table.Property_ID' вместо' Products.ID'. – gmile
Да, я предполагаю, что я имел в виду ПРАВИЛЬНОЕ ПРИСОЕДИНЕНИЕ, конечно, но мне лучше перешагнуть его перед редактированием. – LesterDove