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

Есть таблица места и таблица особенностей места.
У места может быть несколько особенностей.
Нужно сделать выборку с WHERE где место соответствует нескольким особенностям.
fd394a2bd6d0402caea655ae9db455ee.jpg
  • Вопрос задан
  • 770 просмотров
Решения вопроса 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. попадают только те места, где есть оба условия.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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