Jak połączyć wiele tabel, w tym tabelę odnośników, i zwracać dane w wierszach

Próbuję wyświetlić kilka prostych wyników gier komputerowych i ułatwić iterację po wierszu wyników w moim kodzie. Chcę, aby wszystkie istotne dane dla każdej gry znajdowały się w każdym rekordzie, dzięki czemu mogę wydrukować wszystko w jednej linii, np .:

Drużyna A (wynik45) vs.Drużyna B (wynik55), czas trwania gry:5 minZespół C (wynik60) vs.Zespół D (wynik65), czas trwania gry:4.3 min

Tak więc w grze są dwie drużyny, które grają ze sobą, a każda z nich otrzymuje wynik na koniec gry. Zasadniczo kończą się dwoma wierszami w tabeli games_teams dla każdej gry.

Oto mój schemat:

Oto moje dane tabeli:

Oto wyjście, które próbuję osiągnąć, dzięki czemu mogę łatwo iterować wyniki i wyświetlać je na stronie:

Udało mi się to osiągnąć dzięki przerażającemu SQL i wielu podobnym zapytaniom:

SELECT games.game_id, game_name, game_duration, 
(SELECT team_id FROM games_teams WHERE games.game_id = games_teams.game_id LIMIT 0, 1) AS team_id_a,
(SELECT team_id FROM games_teams WHERE games.game_id = games_teams.game_id LIMIT 1, 1) AS team_id_b,
(SELECT teams.team_name FROM games_teams INNER JOIN teams ON games_teams.team_id = teams.team_id WHERE games.game_id = game_id LIMIT 0, 1) AS team_name_a,
(SELECT teams.team_name FROM games_teams INNER JOIN teams ON games_teams.team_id = teams.team_id WHERE games.game_id = game_id LIMIT 1, 1) AS team_name_b,
(SELECT team_score FROM games_teams WHERE games.game_id = games_teams.game_id LIMIT 0, 1) AS team_score_a,
(SELECT team_score FROM games_teams WHERE games.game_id = games_teams.game_id LIMIT 1, 1) AS team_score_b
FROM games

Problem z tą metodą polega na tym, że będzie powolny i nie skaluje się. Muszę także wyciągnąć inne statystyki gry z tabeli games_teams, aby były jeszcze więcej zapytań.

Inną metodą, którą próbowałem, była:

Osiągnąłem to za pomocą następującego SQL:

SELECT games.game_id, game_name, game_duration, teams.team_id, team_name, team_score
FROM games
INNER JOIN games_teams ON games.game_id = games_teams.game_id
INNER JOIN teams ON games_teams.team_id = teams.team_id

Teraz ten sposób będzie trudniejszy do przewidzenia w kodzie, ponieważ odpowiednie dane dla każdej gry znajdują się w dwóch różnych rekordach. Musiałbym zbudować pierwszą część wiersza, a następnie przejść do następnej iteracji pętli i wydrukować następną część. Następnie rozpocznij wszystko od nowa w następnej grze, próbuję wyświetlić wszystkie informacje w jednym wierszu, takie jak:

Drużyna A (wynik 45) vs Drużyna B (wynik 55), czas gry: 5 minut

Dlatego myślę, że byłoby łatwiej, gdyby to wszystko było na jednej płycie. Czy jest jakiś sposób, aby to ładnie zrealizować, więc skaluje się tak dobrze, jeśli potrzebuję więcej kolumn w tabeli games_teams?

Oto link do pastebin z kodem bazy danych, jeśli chcesz go odtworzyć.

Każda pomoc bardzo ceniona, dzięki!

questionAnswers(2)

yourAnswerToTheQuestion