Questo è un po 'complicato, ma ho 2 tavoli. Diciamo che la struttura è qualcosa del genere:
*Table1*
ID
PhoneNumber1
PhoneNumber2
*Table2*
PhoneNumber
SomeOtherField
Le tabelle possono essere unite in base a Table1.PhoneNumber1 -> Table2.PhoneNumber o Table1.PhoneNumber2 -> Table2.PhoneNumber.
Ora, voglio ottenere un set di risultati che contiene PhoneNumber1, SomeOtherField che corrisponde a PhoneNumber1, PhoneNumber2 e SomeOtherField che corrisponde a PhoneNumber2.
Ho pensato a 2 modi per farlo: unendoti al tavolo due volte o unendoti una volta con un OR nella clausola ON.
Metodo 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
Sembra funzionare.
Metodo 2 :
Per avere in qualche modo una query che assomigli un po 'a questa:
SELECT ...
FROM Table1
INNER JOIN Table2
ON Table1.PhoneNumber1 = Table2.PhoneNumber OR
Table1.PhoneNumber2 = Table2.PhoneNumber
Non l'ho ancora fatto funzionare e non sono sicuro che ci sia un modo per farlo.
Qual è il modo migliore per farlo? Nessuno dei due modi sembra semplice o intuitivo ... C'è un modo più diretto per farlo? Come viene generalmente implementato questo requisito?