Cómo unir varias tablas, incluida la tabla de búsqueda y devolver datos en filas

Estoy intentando mostrar algunos resultados de juegos de computadora simples y hacer que sea más fácil iterarlos línea por línea en mi código. Lo quiero para que todos los datos relevantes para cada juego estén en cada registro, así que puedo mostrarlos todos en una línea, por ejemplo:

Equipo a (Puntuación45) vs.Equipo b (Puntuación55), duración del juego:5 minutosEquipo c (Puntuación60) vs.Equipo d (Puntuaciónsesenta y cinco), duración del juego:4.3 minutos

Así que para un juego hay dos equipos que juegan entre sí y cada uno obtiene una puntuación al final del juego. Esencialmente, hay dos filas en la tabla games_teams para cada juego.

Aquí está mi esquema:

Aquí están mis datos de la mesa:

Aquí está la salida que estoy tratando de lograr para que pueda iterar fácilmente los resultados y mostrarlos en la página:

Me las arreglé para lograrlo con un SQL horrible y muchas subconsultas como esta:

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

El problema con ese método es que será lento y no se escalará. También necesito sacar otras estadísticas del juego de la tabla games_teams para que haya aún más subconsultas.

El otro método que probé fue:

Lo logré con el siguiente 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

Ahora, de esta manera, será más difícil descubrir el código, ya que los datos relevantes para cada juego se encuentran en dos registros diferentes. Tendría que construir la primera parte de la fila, luego pasar a la siguiente iteración de bucle e imprimir la siguiente parte. Luego, vuelve a comenzar todo para el próximo juego. Estoy intentando mostrar toda la información en una línea, como:

Equipo A (puntuación 45) vs Equipo B (puntuación 55), duración del juego: 5 minutos

Por eso creo que sería más fácil si todo estuviera en el mismo registro. ¿Hay alguna manera de lograr esto de manera agradable y, por lo tanto, se escala si necesito más columnas en la tabla games_teams?

Aquí hay un enlace de pastebin con el código de la base de datos si necesita volver a crearlo.

Cualquier ayuda muy apreciada, gracias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta