Использование псевдонимов для нескольких копий одной таблицы в MySQL - PullRequest
0 голосов
/ 16 сентября 2018

Я пытаюсь изучить MySQL, прочитав книгу «SQL-запросы для простых смертных 4-е издание» и выполняя в ней упражнения и примеры утверждений. Затем я наткнулся на пример заявления, которое меня несколько дней сбивало с толку. Вот схема базы данных:

enter image description here

В частности, я пытаюсь понять концепции внутренних объединений, которые связывают 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, предлагаемый книгой:

enter image description here

Я так и не смог выяснить, почему использование нескольких копий / псевдонимов для 1 таблицы необходимо для решения этой конкретной проблемы / запроса.

Более того, я знаю, что поле TeamID в таблице Teams связано с полями OddLaneTeamID & EvenLaneTeamID в Tourney_Matches, но нет очевидной связи между TeamID в Teams и WinningTeamID в Match_Games, чтобы связать эти 2 таблицы вместе. Тем не менее, запрос, представленный в книге, все еще работает. Как это возможно?

Может кто-нибудь дать мне подробные объяснения по этим вопросам? Спасибо вам большое!

...