Это немного сложно, но у меня есть 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
Я еще не заставил это работать, и я не уверен, есть ли способ сделать это.
Какой лучший способ сделать это? Ни один из способов не кажется простым или интуитивным ... Есть ли более простой способ сделать это? Как обычно выполняется это требование?