Maison > base de données > tutoriel mysql > Comment récupérer efficacement les données correspondantes dans les tables : jointure interne ou union ?

Comment récupérer efficacement les données correspondantes dans les tables : jointure interne ou union ?

Susan Sarandon
Libérer: 2025-01-15 11:43:45
original
664 Les gens l'ont consulté

How to Efficiently Retrieve Matching Data Across Tables: Inner Join vs. Union?

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 JOINSolution

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal