Combiner efficacement les données de plusieurs tables avec des jointures internes SQL : une approche de sous-requête
Cet article aborde un défi SQL courant : récupérer des données de plusieurs tables en fonction des valeurs de colonnes correspondantes. Le scénario spécifique consiste à extraire des données de tbl_facilitators
et tbl_facilitatorClasses
, dans le but d'afficher les noms de classe aux côtés des noms et prénoms des animateurs primaires et secondaires dans un format structuré.
Une simple jointure interne s'est initialement avérée insuffisante pour récupérer simultanément les détails de l'animateur principal et secondaire.
Exploiter les sous-requêtes pour optimiser les opérations de jointure
La solution, proposée par @philipxy, utilise élégamment des sous-requêtes pour rationaliser le processus de jointure. Examinons la requête affinée étape par étape :
Alias tbl_facilitatorClasses
<code class="language-sql">(tbl_facilitatorClasses AS tblCLS</code>
Cela attribue l'alias tblCLS
à tbl_facilitatorClasses
par souci de concision et de clarté.
Rejoindre tblCLS
avec tbl_facilitators
(Facilitateur principal)
<code class="language-sql">INNER JOIN tbl_facilitators AS tblP ON tblCLS.primeFacil = tblP.facilID)</code>
Cette sous-requête rejoint tblCLS
et tbl_facilitators
(alias tblP
) en utilisant primeFacil
comme clé de correspondance, générant un ensemble de résultats intermédiaire contenant les noms de classe et les informations de l'animateur principal.
Rejoindre la sous-requête avec tbl_facilitators
(animateur secondaire)
<code class="language-sql">INNER JOIN tbl_facilitators AS tblS ON tblCLS.secondFacil = tblS.facilID;</code>
La jointure interne finale fusionne la sortie de la sous-requête précédente avec tbl_facilitators
(alias tblS
), en utilisant secondFacil
pour la correspondance. Cela donne l'ensemble de données complet, y compris les données des animateurs primaires et secondaires, ainsi que les noms des classes.
Sélection de données avec la SELECT
Déclaration
Les colonnes souhaitées sont ensuite récupérées à l'aide d'une instruction SELECT
:
<code class="language-sql">SELECT tblCLS.className, tblP.facilLname, tblP.facilFname, tblS.facilLname, tblS.facilFname</code>
En utilisant des parenthèses autour de la sous-requête, MS Access séquence correctement les opérations, garantissant que les jointures sont effectuées dans l'ordre prévu. Cette approche récupère efficacement les données requises, produisant le résultat souhaité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!