Como unir várias tabelas, incluindo tabela de consulta e retornar dados em linhas

Estou tentando exibir alguns resultados de jogos de computador simples e facilitar a iteração dos resultados linha por linha no meu código. Quero que todos os dados relevantes de cada jogo estejam em cada registro, para que eu possa gerar todos os resultados em uma linha, por exemplo:

Equipa A (Ponto45) vs.Equipe b (Ponto55), duração do jogo:5 minEquipe C (Ponto60) vs.Equipe d (Ponto65), duração do jogo:4,3 min

Então, para um jogo, há dois times que jogam um contra o outro e cada um recebe uma pontuação no final do jogo. Essencialmente, existem duas linhas na tabela games_teams para cada jogo.

Aqui está o meu esquema:

Aqui está os dados da minha tabela:

Aqui está a saída que estou tentando alcançar para que eu possa facilmente percorrer os resultados e exibi-los na página:

Consegui alcançar isso com um SQL horrível e muitas subconsultas como:

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

O problema com esse método é que ele será lento e não será dimensionado. Eu também preciso extrair outras estatísticas de jogo da tabela games_teams para que haja ainda mais subqueries.

O outro método que tentei foi:

Eu consegui isso com o seguinte 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

Agora, desta forma, será mais difícil foreach no código, pois os dados relevantes para cada jogo estão em dois registros diferentes. Eu teria que construir a primeira parte da linha, depois ir para a próxima iteração de loop e imprimir a próxima parte. Então comece tudo de novo para o próximo jogo, estou tentando exibir todas as informações em uma linha como:

Time A (pontuação 45) vs Equipe B (pontuação 55), duração do jogo: 5mins

Então é por isso que eu acho que seria mais fácil se fosse tudo no único disco. Existe uma maneira de fazer isso muito bem e, por isso, também pode ser dimensionada se eu precisar de mais colunas na tabela games_teams?

Aqui está um link pastebin com o código do banco de dados, se você precisar recriá-lo.

Qualquer ajuda muito apreciada, obrigado!

questionAnswers(2)

yourAnswerToTheQuestion