Heim >Datenbank >MySQL-Tutorial >Wie kann man einen Tisch mehrmals effizient mit sich selbst verbinden?
Zweimal an denselben Tisch anschließen: Verstehen Sie den besten Ansatz
Bei der Arbeit mit mehreren Tischen steht man häufig vor der Aufgabe, diese zusammenzufügen dieselbe Spalte mehrmals. Diese Herausforderung entsteht, wenn Sie Informationen aus derselben Tabelle benötigen, die mit verschiedenen Spalten einer anderen Tabelle verknüpft sind.
Im gegebenen Szenario haben Sie zwei Tabellen mit ähnlichen Strukturen, die auf der Grundlage von Table1.PhoneNumber1 und Table1.PhoneNumber2 zusammengeführt werden. Das Ziel besteht darin, einen Ergebnissatz abzurufen, der PhoneNumber1, SomeOtherField entsprechend PhoneNumber1, PhoneNumber2 und SomeOtherField entsprechend PhoneNumber2 enthält.
Methode 1: Mehrere Verknüpfungen
Die erste Methode Dazu gehört, wie gezeigt, zweimal am selben Tisch Platz zu nehmen unten:
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
Diese Methode ruft die gewünschten Daten effizient ab, obwohl sie aufgrund mehrerer Join-Klauseln umständlich erscheinen kann.
Methode 2: ODER-Bedingung
Die zweite Methode versucht, die Abfrage mithilfe einer ODER-Bedingung in der ON-Klausel zu vereinfachen:
SELECT ... FROM Table1 INNER JOIN Table2 ON Table1.PhoneNumber1 = Table2.PhoneNumber OR Table1.PhoneNumber2 = Table2.PhoneNumber
Allerdings Dieser Ansatz erfordert zusätzliche Handhabung und führt möglicherweise nicht zum gewünschten Ergebnis.
Bester Ansatz
Der empfohlene Ansatz besteht darin, Methode 1 zu verwenden und weiterzumachen die Tabelle mehrmals mit eindeutigen Aliasnamen für jeden Join. Diese Methode ist zuverlässig und gewährleistet einen genauen Datenabruf.
Überlegungen zum Refactoring
Es ist zu beachten, dass die Verwendung von Telefonnummern als natürliche Schlüssel zu Wartungsproblemen führen kann, ebenso wie Telefonnummern häufig wechseln. Erwägen Sie die Verwendung künstlicher Schlüssel, um die Datenintegrität aufrechtzuerhalten.
Das obige ist der detaillierte Inhalt vonWie kann man einen Tisch mehrmals effizient mit sich selbst verbinden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!