samoilenkoevgeniy
@samoilenkoevgeniy
Lead Full-Stack Web Developer

MYSQL сложная выборка многое ко многим, как организовать?

Есть одна главная таблица с людьми - peoples. (id, name)
Есть 2 и более таблиц со свойствами этих peoples. (id, property_name)
Есть 2 и более таблиц связей для этих свойств c людьми people_name_property. (id, people_id, propery_id)
Есть 2 и более массива данных, с набором этих свойств, по некоторым свойствам массив может быть пуст.
Собственно вопрос - как с учетом переданных свойств выбрать всех людей, по связанным таблицам.
Конкретный пример:
Peoples (id, name)
Regions (id, region_name)
Peoples_to_region (id, people_id, region_id)
Metros (id, metro_name)
Peoples_to_metros(id, people_id, metro_id)

И есть 2 массива, содержащие в себе id регионов и станций метро
Как выбрать всех peoples для которых указан регион и метро из массива?
  • Вопрос задан
  • 2437 просмотров
Решения вопроса 1
@kazmiruk
SELECT *
FROM Peoples
INNER JOIN peoples_to_region
ON Peoples_to_region.people_id = Peoples.id AND Peoples_to_region.region_id IN ({region_list})
INNER JOIN Peoples_to_metros.people_id = Peoples.id AND Peoples_to_metros.metro_id IN ({metro_list})

Ну и peoples - "народы" переводится, а не "люди"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы