Задать вопрос
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 для которых указан регион и метро из массива?
  • Вопрос задан
  • 2438 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Skillbox
    PHP-разработчик. Базовый уровень
    3 месяца
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Stepik
    PHP (pro)
    2 недели
    Далее
  • OTUS
    PHP Developer. Professional
    5 месяцев
    Далее
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Onskills
    PHP: базовый курс
    1 месяц
    Далее
Решения вопроса 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 - "народы" переводится, а не "люди"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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