SQL-запрос - Найти все пары актеров, которые играли точно в тех же фильмах - PullRequest
2 голосов
/ 16 мая 2019

Я скоро готовлюсь к экзамену по базе данных, но не могу понять, как сделать этот запрос.

Я копирую и вставляю упражнение в том виде, как оно есть: учитывая 2 таблицы

FILM(Title, Director, Year, Genre)
InCastOf(Actor, Film) Where InCastOf(film) is constrained to Film(Title)

Напишите запрос, чтобы найти все пары актеров, которые ТОЧНО сыграли в одних и тех же фильмах.

То, что я получил до сих пор:

SELECT InCastOf.Actor AS A1, T.Actor AS A2, InCastOf.Film FROM InCastOf
JOIN (SELECT Actor, Film FROM InCastOf) AS T ON InCastOf.Film = T.Film
WHERE  InCastOf.Actor != T.Actor

, которое возвращает мне за каждый фильм пару актеров, которые играли в нем.Я мог бы использовать group by и т. Д., Чтобы закрепить запрос, но слово «точно» доставляет мне некоторые неприятности, потому что мне нужно убедиться, что эти актеры работали только над одними и теми же фильмами и ничего больше.По крайней мере, это то, что я понимаю из слова «Точно».

Спасибо за помощь!

1 Ответ

3 голосов
/ 16 мая 2019

Благодаря подсказке @Martin Smith я написал запрос следующим образом:

SELECT T1.Actor AS A1, T2.Actor AS A2, T1.films FROM (
    SELECT Actor, GROUP_CONCAT(Film) AS films
    FROM InCastOf 
    GROUP BY Actor) AS T1
JOIN (
    SELECT Actor, GROUP_CONCAT(Film) AS films
    FROM InCastOf 
    GROUP BY Actor) AS T2 
ON T1.films = T2.films
WHERE T1.Actor > T2.Actor
...