Це трохи складніше, але у мене є 2 таблиці. Скажімо, структура виглядає приблизно так:
*Table1*
ID
PhoneNumber1
PhoneNumber2
*Table2*
PhoneNumber
SomeOtherField
Таблиці можна з'єднати на основі Table1.PhoneNumber1 -> Table2.PhoneNumber або Table1.PhoneNumber2 -> Table2.PhoneNumber.
Тепер я хочу отримати набір результатів, що містить PhoneNumber1, SomeOtherField, що відповідає PhoneNumber1, PhoneNumber2, і SomeOtherField, що відповідає PhoneNumber2.
Я подумав два способи зробити це - або приєднавшись до столу двічі, або з'єднавшись один раз із АБО у пункті ON.
Спосіб 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
Це, здається, працює.
Спосіб 2 :
Щоб якось мати запит, який виглядає приблизно так -
SELECT ...
FROM Table1
INNER JOIN Table2
ON Table1.PhoneNumber1 = Table2.PhoneNumber OR
Table1.PhoneNumber2 = Table2.PhoneNumber
Я ще не змусив цього працювати, і я не впевнений, чи є спосіб це зробити.
Який найкращий спосіб досягти цього? Жоден спосіб не здається простим чи інтуїтивним ... Чи існує більш простий спосіб зробити це? Як ця вимога взагалі виконується?