Как сделать фильтр, если связь между записью 1 ко многим?

Есть таблица места и таблица особенностей места.
У места может быть несколько особенностей.
Нужно сделать выборку с WHERE где место соответствует нескольким особенностям.
fd394a2bd6d0402caea655ae9db455ee.jpg
  • Вопрос задан
  • 724 просмотра
Решения вопроса 2
@KuzmenkoArtem
Возможно есть варианты получше
SELECT places.id, COUNT(features.name) as 'count_features' 
FROM places
JOIN features ON places.id = features.place_id
WHERE features.name in ('wi-fi', 'river')
GROUP BY places.id
HAVING count_features = 2
Ответ написан
denman1985
@denman1985
SQL, Oracle Forms/Reports dbd
3 таблицы: места, особенности и таблица связей.
select a.name
from mesta as a join mes_oso as b on (a.id = b.id_mesta)
                join osobennosti as c on (b.id_os=c.id)
where c.name_os in ('wi_fi', 'coffee_to_go')
group by a.name
having count(*) = 2


В строке having count(*) = 2 должно стоять кол-во нужных условий. В примере совпадать должно 2. попадают только те места, где есть оба условия.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы