Das ist etwas kompliziert, aber ich habe 2 Tische. Nehmen wir an, die Struktur sieht ungefähr so aus:
*Table1*
ID
PhoneNumber1
PhoneNumber2
*Table2*
PhoneNumber
SomeOtherField
Die Tabellen können basierend auf Table1.PhoneNumber1 -> Table2.PhoneNumber oder Table1.PhoneNumber2 -> Table2.PhoneNumber verknüpft werden.
Jetzt möchte ich eine Ergebnismenge erhalten, die PhoneNumber1, SomeOtherField, das PhoneNumber1, PhoneNumber2 entspricht, und SomeOtherField, das PhoneNumber2 entspricht, enthält.
Ich habe mir zwei Möglichkeiten ausgedacht, dies zu tun - entweder durch zweimaliges Verbinden auf dem Tisch oder durch einmaliges Verbinden mit einem ODER in der ON-Klausel.
Methode 1 :
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
Das scheint zu funktionieren.
Methode 2 :
Irgendwie eine Abfrage zu haben, die ein bisschen so aussieht -
SELECT ...
FROM Table1
INNER JOIN Table2
ON Table1.PhoneNumber1 = Table2.PhoneNumber OR
Table1.PhoneNumber2 = Table2.PhoneNumber
Ich habe das noch nicht zum Laufen gebracht und bin mir nicht sicher, ob es einen Weg gibt, es zu tun.
Was ist der beste Weg, um dies zu erreichen? Keiner der Wege scheint einfach oder intuitiv zu sein ... Gibt es einen einfacheren Weg, dies zu tun? Wie wird diese Anforderung allgemein umgesetzt?