Esto es un poco complicado, pero tengo 2 tablas. Digamos que la estructura es algo como esto:
*Table1*
ID
PhoneNumber1
PhoneNumber2
*Table2*
PhoneNumber
SomeOtherField
Las tablas se pueden unir basándose en Table1.PhoneNumber1 -> Table2.PhoneNumber, o Table1.PhoneNumber2 -> Table2.PhoneNumber.
Ahora, quiero obtener un conjunto de resultados que contenga PhoneNumber1, SomeOtherField que corresponda a PhoneNumber1, PhoneNumber2 y SomeOtherField que corresponda a PhoneNumber2.
Pensé en 2 formas de hacer esto: uniéndome a la mesa dos veces o uniéndome una vez con un OR en la 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
Esto parece funcionar.
Método 2 :
Para tener de alguna manera una consulta que se parezca un poco a esto:
SELECT ...
FROM Table1
INNER JOIN Table2
ON Table1.PhoneNumber1 = Table2.PhoneNumber OR
Table1.PhoneNumber2 = Table2.PhoneNumber
No he logrado que esto funcione todavía y no estoy seguro de si hay una manera de hacerlo.
¿Cuál es la mejor manera de lograrlo? Ninguna de las dos parece simple o intuitiva ... ¿Existe una forma más sencilla de hacer esto? ¿Cómo se implementa este requisito en general?