Как сделать запрос на пересечение в MySQL? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть два запроса sql, и мне нужно пересечение между ними.Я знаю, что у mysql нет операнда пересечения, так как я могу это сделать?Пробовал некоторые решения, которые я нашел в Интернете, но все они возвращают некоторую синтаксическую ошибку.Запросы:

SELECT person_name FROM person NATURAL JOIN (
  SELECT * FROM movie NATURAL JOIN role WHERE movie_name = 'Alien'
  ) alias1

SELECT person_name FROM person WHERE gender = 'f'

1 Ответ

0 голосов
/ 04 октября 2018

Вы можете JOIN все три таблицы вместе и применить оба условия WHERE.

Вот пример.Предполагается, что ваша таблица movie присоединяется к вашей таблице role в столбце с именем movie_id, а также предполагается, что у вас есть столбец person_id в role и person, чтобы присоединиться к ним.Вам нужно изменить этот запрос, чтобы использовать столбцы, используемые в ваших таблицах.

SELECT
    p.person_name
FROM
    movie m
    INNER JOIN role r
        ON (m.movie_id=r.movie_id)
    INNER JOIN person p
        ON (r.person_id=p.person_id)
WHERE
    m.movie_name='Alien'
    AND p.gender='f'

Редактировать : я использовал INNER JOIN здесь, с предположением, что столбцыприсоединяйтесь, в отличие от сохранения ОП NATURAL JOIN.Как уже упоминалось в комментариях к ФП, передовой практикой является явная идентификация соединений, а не использование NATURAL JOIN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...