Maison > base de données > tutoriel mysql > Rejoindre la même table deux fois : quand et comment est-ce une bonne pratique ?

Rejoindre la même table deux fois : quand et comment est-ce une bonne pratique ?

Mary-Kate Olsen
Libérer: 2025-01-07 07:27:42
original
228 Les gens l'ont consulté

Joining the Same Table Twice: When and How is it Best Practice?

Rejoindre deux fois la même table : meilleures pratiques

Problème :

Lors de la jointure de deux tables avec des colonnes correspondantes, comment pouvez-vous récupérer efficacement les données correspondant aux deux colonnes simultanément ?

Méthode 1 : Rejoindre Deux fois

Comme le montre l'exemple ci-dessus, joindre deux fois la même table permet une récupération de données distincte en fonction de chaque colonne correspondante :

SELECT t.PhoneNumber1, t.PhoneNumber2, 
       t1.SomeOtherFieldForPhone1, t2.someOtherFieldForPhone2
FROM Table1 t
JOIN Table2 t1 ON t1.PhoneNumber = t.PhoneNumber1
JOIN Table2 t2 ON t2.PhoneNumber = t.PhoneNumber2
Copier après la connexion

Méthode 2 : OU dans Clause ON

Une approche alternative, bien que non démontrée comme fonctionnelle, tenterait de joindre plusieurs colonnes correspondantes à l'aide d'un OU dans le ON clause :

SELECT ...
FROM Table1
INNER JOIN Table2 
   ON Table1.PhoneNumber1 = Table2.PhoneNumber OR
      Table1.PhoneNumber2 = Table2.PhoneNumber
Copier après la connexion

Meilleure pratique :

La méthode 1 est recommandée comme la meilleure solution. Elle fournit un moyen simple et sans ambiguïté de récupérer données correspondant à plusieurs colonnes correspondantes sans recourir à des clauses OU complexes.

Alternatives à améliorer Conception :

Bien que les deux méthodes puissent obtenir le résultat souhaité, il est important de prendre en compte les meilleures pratiques de conception de bases de données pour éviter de s'appuyer sur des jointures entre tables basées sur des clés naturelles, telles que des numéros de téléphone. Les clés naturelles peuvent changer fréquemment, entraînant des problèmes potentiels d'intégrité des données.

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