Я пытаюсь изучить MySQL, прочитав книгу «SQL-запросы для простых смертных 4-е издание» и выполняя в ней упражнения и примеры утверждений. Затем я наткнулся на пример заявления, которое меня несколько дней сбивало с толку. Вот схема базы данных:
В частности, я пытаюсь понять концепции внутренних объединений, которые связывают 2 или более таблиц вместе. Пример заявления представляет запрос, который выглядит следующим образом: «Перечислите все турниры, турнирные матчи и результаты игры».
Согласно книге, для решения этого запроса должно быть задействовано 4 таблицы (Команды, Турниры, Tourney_Matches, Match_Games).
Кроме того, книга советует мне создать 3 копии таблицы «Команды», каждой из которых назначаются отдельные псевдонимы (OddTeam, EvenTeam & Winner) для системы баз данных, чтобы различать их. Oddteam используется для связывания команд с Tourney_Matches с использованием TeamID & OddLaneTeamID. EvenTeam используется для связывания команд с Tourney_Matches с использованием TeamID и EvenLaneTeamID. Winner используется для связывания команд с Match_Games с помощью TeamID и WinningTeamID.
Вот запрос MySQL, предлагаемый книгой:
Я так и не смог выяснить, почему использование нескольких копий / псевдонимов для 1 таблицы необходимо для решения этой конкретной проблемы / запроса.
Более того, я знаю, что поле TeamID в таблице Teams связано с полями OddLaneTeamID & EvenLaneTeamID в Tourney_Matches, но нет очевидной связи между TeamID в Teams и WinningTeamID в Match_Games, чтобы связать эти 2 таблицы вместе. Тем не менее, запрос, представленный в книге, все еще работает. Как это возможно?
Может кто-нибудь дать мне подробные объяснения по этим вопросам? Спасибо вам большое!