В настоящее время я прохожу Стэнфордский курс самообучения по SQL, и этот вопрос они задают.
Вопрос: Для всех пар рецензентов, чтобы оба рецензента дали оценку одному и тому же фильму, верните имена обоих рецензентов. Удалите дубликаты, не объединяйте рецензентов с собой и включайте каждую пару только один раз. Для каждой пары верните имена в паре в алфавитном порядке.
Вот схема
Movie ( mID, title, year, director )
Английский: есть фильм с идентификационным номером mID, названием, годом выпуска и режиссером.
Reviewer ( rID, name )
Английский: Рецензент с идентификационным номером rID имеет определенное имя.
Rating ( rID, mID, stars, ratingDate )
Русский: RID рецензента присвоил фильму mID количество звездочек (1-5) на определенную дату рейтинга.
Моя попытка:
Select R.Name, R2.Name
From Reviewer R
Join Reviewer R2 on (R.rID = R2.rID)
Join Rating Rt on (Rt.rID = R2.rID)
Join Rating Rt2 on (Rt2.rID = R.rID)
Where Rt.MID = Rt2.mID and R.rID < r2.rID
Логика: я знаю, что мне нужно иметь таблицу с 2 столбцами «Имя обозревателя» и 2 столбцами «Фильм». Я применяю условие так, чтобы фильмы были равны друг другу, и условие, что идентификаторы не могут быть такими же, как в вопросе Не объединяйте рецензентов с собой, и включайте каждую пару только один раз.
Мой результат пуст. (неверно) Что я делаю не так, и может кто-нибудь объяснить мне, чтобы я мог понять логику этого? Буду признателен, спасибо заранее!