Maison > base de données > tutoriel mysql > Comment joindre efficacement une table à elle-même plusieurs fois ?

Comment joindre efficacement une table à elle-même plusieurs fois ?

DDD
Libérer: 2025-01-07 07:16:41
original
588 Les gens l'ont consulté

How to Efficiently Join a Table to Itself Multiple Times?

Rejoindre la même table deux fois : comprendre la meilleure approche

Lorsque vous travaillez avec plusieurs tables, il est courant de devoir les rejoindre sur la même colonne plusieurs fois. Ce défi se pose lorsque vous avez besoin d'informations de la même table liées à différentes colonnes d'une autre table.

Dans le scénario donné, vous disposez de deux tables avec des structures similaires, se joignant en fonction de Table1.PhoneNumber1 et Table1.PhoneNumber2. Le but est de récupérer un ensemble de résultats contenant PhoneNumber1, SomeOtherField correspondant à PhoneNumber1, PhoneNumber2 et SomeOtherField correspondant à PhoneNumber2.

Méthode 1 : Plusieurs jointures

La première méthode implique de se joindre deux fois à la même table, comme démontré ci-dessous :

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

Ceci La méthode récupère efficacement les données souhaitées, même si elle peut sembler lourde en raison de plusieurs clauses de jointure.

Méthode 2 : condition OU

La deuxième méthode tente de simplifier la requête en utilisant une condition OR dans la clause ON :

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

Cependant, cette approche nécessite une manipulation supplémentaire et peut ne pas produire l'effet escompté résultat.

Meilleure approche

L'approche recommandée consiste à utiliser la Méthode 1, en rejoignant la table plusieurs fois avec des alias clairs pour chaque jointure. Cette méthode est fiable et garantit une récupération précise des données.

Considérations relatives à la refactorisation

Il convient de noter que l'utilisation de numéros de téléphone comme clés naturelles peut entraîner des problèmes de maintenance, car les numéros de téléphone peuvent changer fréquemment. Pensez à utiliser des clés artificielles pour maintenir l'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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal