Isso é um pouco complicado, mas tenho 2 tabelas. Digamos que a estrutura seja mais ou menos assim:
*Table1*
ID
PhoneNumber1
PhoneNumber2
*Table2*
PhoneNumber
SomeOtherField
As tabelas podem ser unidas com base em Table1.PhoneNumber1 -> Table2.PhoneNumber ou Tabela1.PhoneNumber2 -> Table2.PhoneNumber.
Agora, quero obter um conjunto de resultados que contém PhoneNumber1, SomeOtherField que corresponda a PhoneNumber1, PhoneNumber2 e SomeOtherField que corresponda a PhoneNumber2.
Pensei em 2 maneiras de fazer isso - juntando-se à mesa duas vezes ou juntando-se uma vez com OR na cláusula ON.
Método 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
Isso parece funcionar.
Método 2 :
Para de alguma forma ter uma consulta que se parece um pouco com isto -
SELECT ...
FROM Table1
INNER JOIN Table2
ON Table1.PhoneNumber1 = Table2.PhoneNumber OR
Table1.PhoneNumber2 = Table2.PhoneNumber
Ainda não fiz isso funcionar e não tenho certeza se há uma maneira de fazer isso.
Qual é a melhor maneira de fazer isso? Nenhuma das formas parece simples ou intuitiva ... Existe uma maneira mais direta de fazer isso? Como esse requisito é geralmente implementado?