J'ai honte de dire que mon expérience SQL est si peu utilisée, elle tombe en panne quand je dois construire une requête légèrement complexe, donc j'apprécierais un SQL conseils d'experts.SQL - Joins multiples à une table - Deux valeurs à partir de deux clés
Essentiellement, j'ai deux tables, semblables à ce qui suit
games(game_id, game_date, player_a_id, player_a_score, player_b_id, player_b_score)
players(player_id, player_name)
Je souhaite construire une requête qui retourne dans le même jeu de résultats, les noms des joueurs et des scores à savoir.
game_id, game_date, player_a_name, player_a_score, player_b_name, player_b_score
Voici mon approche naïve que je voudrais optimiser
select games.game_id, games.game_date, (select player_name from players where player_id = games.player_a_id), games.player_a_score, (select player_name from players where player_id = games.player_b_id), games.player_b_score)
Quelqu'un peut-il me conseiller la meilleure façon d'aborder ce sujet?
Merci!
peut vous expliquer pourquoi une jointure interne sera plus efficace qu'une jointure gauche? – adam
Qu'en est-il du cas où player_a_id est nul ou player_b_id est nul. Cette déclaration ne sélectionne pas ces jeux. – mphair
Je suppose que je supposais que player_a_id et player_b_id ne peuvent pas être null. Si l'un d'entre eux était nul, comment/pourquoi auriez-vous un enregistrement de jeu avec des scores? –