Таблица отелей:
id | name | cityId
Таблица городов:
id | name
Задача: выбрать все отели, находящиеся в городе Москва, например.
Решение:
SELECT * FROM hotels WHERE cityId = 12
Проблема: Москва может быть не одна (в данном примере не учитываем страну), кроме того может писаться еще и латиницей.
Новое решение:
1.
SELECT * FROM cities WHERE name = 'Москва' or name = 'Moscow';
Получил набор записей. Вручную скопировал их айдишники в:
2.
SELECT * FROM hotels WHERE cityId in (12, 19, 23)
Таких айдишников может быть много. Было бы здорово автоматизировать через подзапрос, но подзапрос должен возвращать только одно значение (только начал читать Грабера). Если добавить GROUP BY, то подзапрос вернут только одно значение.
Но ведь WHERE c IN ведет себя как цикл, перебирает "массив" кодов... Как реализовать?