У меня есть следующие таблицы:
Номер:
room_id | room_name | ...
1 | regular | ...
2 | suite | ...
.
Параметры:
pref_id | pref_kind | ...
1 | wi-fi | ...
2 | view | ...
.
Rooms_and_preferences:
room_id | pref_id
1 | 1
1 | 2
2 | 1
4 | 4
4 | 3
5 | 4
6 | 1
.
Например, у room_1 есть 2 предпочтения, у room_2 есть только 1 предпочтение, у room_3 нет предпочтений и т. Д.
Пользователь выбирает настройки, и я хочу отобразить комнаты, в которых они есть. Например:
- если пользователю не нужны настройки, я хочу отобразить room_3.
- если пользователь хочет, чтобы preference_1 отображался как room_2, room_6.
- , если пользователь хочет preference_1, preference_2, и я хочу, чтобы отображался room_1.
Предположим, у меня есть требуемые Preferences_ids и я хочу отобразить room_ids из таблицы Rooms_and_preferences. Что такое SQL-запрос для этого?
Я пробовал этот код, но не работает так, как мне хочется:
SELECT room_id
FROM Rooms_and_preferences
where pref_id in ( . , . , ...)
GROUP BY room_id
HAVING COUNT(DISTINCT pref_id) = *number of list