To trochę skomplikowane, ale mam 2 stoły. Powiedzmy, że struktura wygląda mniej więcej tak:
*Table1*
ID
PhoneNumber1
PhoneNumber2
*Table2*
PhoneNumber
SomeOtherField
Tabele można łączyć w oparciu o Tabela1.PhoneNumber1 -> Table2.PhoneNumber lub Table1.PhoneNumber2 -> Table2.PhoneNumber.
Teraz chcę uzyskać zestaw wyników zawierający PhoneNumber1, SomeOtherField, który odpowiada PhoneNumber1, PhoneNumber2 i SomeOtherField, który odpowiada PhoneNumber2.
Pomyślałem o 2 sposobach, aby to zrobić - albo dołączając dwukrotnie do stołu, albo łącząc się raz z klauzulą OR w klauzuli ON.
Metoda 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
To wydaje się działać.
Metoda 2 :
Aby w jakiś sposób uzyskać zapytanie, które wygląda trochę tak -
SELECT ...
FROM Table1
INNER JOIN Table2
ON Table1.PhoneNumber1 = Table2.PhoneNumber OR
Table1.PhoneNumber2 = Table2.PhoneNumber
Nie udało mi się jeszcze tego zrobić i nie jestem pewien, czy jest na to sposób.
Jaki jest najlepszy sposób na osiągnięcie tego? Żaden sposób nie wydaje się prosty ani intuicyjny… Czy istnieje prostszy sposób na zrobienie tego? W jaki sposób ten wymóg jest ogólnie wdrażany?