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
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
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!