Heim > Datenbank > MySQL-Tutorial > Wie kann man einen Tisch mehrmals effizient mit sich selbst verbinden?

Wie kann man einen Tisch mehrmals effizient mit sich selbst verbinden?

DDD
Freigeben: 2025-01-07 07:16:41
Original
588 Leute haben es durchsucht

How to Efficiently Join a Table to Itself Multiple Times?

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage