SQL для объединения таблиц только там, где ВСЕ указанные критерии верны - PullRequest
0 голосов
/ 07 ноября 2011

Скажем, у меня есть две таблицы 'cars' и 'properties', связанные таблицей 'car_properties'. Я могу выбрать все автомобили, которые говорят, электрические стеклоподъемники ИЛИ радио ИЛИ оба, делая что-то вроде следующего ...

SELECT cars.id 
FROM cars 
JOIN car_properties 
   ON cars.id = car_properties.car_id 
WHERE 
   car_properties.property_id = 1 
   OR car_properties.property_id = 2

где значение_идентификатора 'электрических окон' будет '1', а 'автомобильный радиоприемник' будет '2'.

НО, что я действительно хочу сделать, это выбрать ТОЛЬКО автомобили, которые имеют ОБА свойства (не только одно или другое или оба).

Я подозреваю, что это действительно просто, но какой самый эффективный способ сделать это?

1 Ответ

2 голосов
/ 07 ноября 2011

ПРИСОЕДИНЯЙТЕСЬ дважды:

SELECT cars.id
  FROM cars
  JOIN car_properties AS cp1
    ON cp1.car_id = cars.id
   AND cp1.property_id = 1
  JOIN car_properties AS cp2
    ON cp2.car_id = cars.id
   AND cp2.property_id = 2
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...