Heim >Datenbank >MySQL-Tutorial >Zweimal am selben Tisch sitzen: Wann und wie ist das die beste Vorgehensweise?
Problem:
Wie wird beim Verbinden zweier Tabellen mit übereinstimmenden Spalten vorgegangen? Können Sie Daten für beide Spalten gleichzeitig effizient abrufen?
Methode 1: Verbinden Zweimal
Wie im obigen Beispiel zu sehen ist, ermöglicht das zweimalige Verknüpfen derselben Tabelle einen separaten Datenabruf basierend auf jeder übereinstimmenden Spalte:
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
Methode 2: ODER in ON-Klausel
Ein alternativer Ansatz, der zwar nicht als funktionsfähig erwiesen ist, würde versuchen, mehrere übereinstimmende Spalten mithilfe eines OR im ON zu verknüpfen Klausel:
SELECT ... FROM Table1 INNER JOIN Table2 ON Table1.PhoneNumber1 = Table2.PhoneNumber OR Table1.PhoneNumber2 = Table2.PhoneNumber
Best Practice:
Methode 1 wird als beste Lösung empfohlen. Sie bietet eine unkomplizierte und eindeutige Möglichkeit zum Abrufen Daten, die mehreren übereinstimmenden Spalten entsprechen, ohne auf komplexe ODER-Klauseln angewiesen zu sein.
Alternativen zur Verbesserung Design:
Während beide Methoden das gewünschte Ergebnis erzielen können, ist es wichtig, die Best Practices für das Datenbankdesign zu berücksichtigen, um zu vermeiden, dass man sich auf Verknüpfungen zwischen Tabellen verlässt, die auf natürlichen Schlüsseln wie Telefonnummern basieren. Natürliche Schlüssel können sich häufig ändern, was zu potenziellen Problemen mit der Datenintegrität führen kann.
Das obige ist der detaillierte Inhalt vonZweimal am selben Tisch sitzen: Wann und wie ist das die beste Vorgehensweise?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!