Comparaison de la jointure interne et de l'union pour la correspondance des données entre tables
La récupération de données correspondantes sur plusieurs tables nécessite souvent un examen attentif des méthodes de requête de base de données. Cet article compare l'utilisation de INNER JOIN
et UNION
pour cette tâche, en se concentrant sur les scénarios où ils sont les plus efficaces.
INNER JOIN
contre UNION
INNER JOIN
: Cette opération relie les lignes de deux tables ou plus en fonction des valeurs correspondantes dans les colonnes spécifiées. Le jeu de résultats contient uniquement les lignes pour lesquelles une correspondance existe dans toutes les tables jointes.UNION
: Ceci combine les ensembles de résultats de deux ou plusieurs SELECT
instructions en un seul ensemble de résultats, éliminant ainsi les lignes en double. Il est crucial que le nombre et les types de données des colonnes dans les instructions combinées soient identiques.Exemple illustratif
Considérez deux tableaux :
tbl_facilitators
: Contient des informations sur l'animateur.tbl_facilitatorClasses
: Contient les détails du cours, y compris les identifiants des animateurs principal et secondaire.L'objectif est de récupérer le nom du cours ainsi que les noms et prénoms des animateurs primaires et secondaires de chaque cours.
INNER JOIN
Solution
La requête suivante utilise INNER JOIN
pour y parvenir :
<code class="language-sql">SELECT tbl_facilitatorClasses.className, tbl_facilitators.facilLname AS primary_facilitator_lname, tbl_facilitators.facilFname AS primary_facilitator_fname, tbl_facilitators2.facilLname AS secondary_facilitator_lname, tbl_facilitators2.facilFname AS secondary_facilitator_fname FROM tbl_facilitatorClasses INNER JOIN tbl_facilitators ON tbl_facilitatorClasses.primeFacil = tbl_facilitators.facilID INNER JOIN tbl_facilitators AS tbl_facilitators2 ON tbl_facilitatorClasses.secondFacil = tbl_facilitators2.facilID;</code>
Cette requête joint efficacement tbl_facilitatorClasses
à tbl_facilitators
deux fois (en utilisant un alias pour la deuxième jointure) pour récupérer les informations requises pour les facilitateurs principaux et secondaires dans un résultat unique et structuré.
UNION
Limites
Une opération UNION
n'est pas adaptée à ce scénario. Un UNION
nécessiterait une restructuration significative des données, produisant un résultat moins efficace et moins lisible, et ne fournissant pas la structure de lignes combinée souhaitée pour chaque classe.
Conclusion
Pour récupérer des données associées à partir de plusieurs tables en fonction des valeurs de colonnes correspondantes, comme démontré dans cet exemple, INNER JOIN
est le choix bien plus approprié et efficace que UNION
. UNION
est mieux adapté pour combiner des ensembles de résultats distincts provenant de requêtes similaires, et non pour joindre des données basées sur des clés relationnelles.
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!