C'est un peu compliqué, mais j'ai deux tableaux. Disons que la structure est quelque chose comme ceci :
*Table1*
ID
PhoneNumber1
PhoneNumber2
*Table2*
PhoneNumber
SomeOtherField
Les tables peuvent être jointes sur la base de Table1.PhoneNumber1 -> Table2.PhoneNumber, ou Table1.PhoneNumber2 -> Table2.PhoneNumber.
Je souhaite maintenant obtenir un jeu de résultats contenant PhoneNumber1, SomeOtherField correspondant à PhoneNumber1, PhoneNumber2 et SomeOtherField correspondant à PhoneNumber2.
J'ai pensé à deux façons de le faire - soit en joignant deux fois la table, soit en la joignant une fois avec un OR dans la clause ON.
Méthode 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
Cela semble fonctionner.
Méthode 2 :
Pour avoir en quelque sorte une requête qui ressemble à ceci -
SELECT ...
FROM Table1
INNER JOIN Table2
ON Table1.PhoneNumber1 = Table2.PhoneNumber OR
Table1.PhoneNumber2 = Table2.PhoneNumber
Je n'ai pas encore réussi à faire fonctionner ce système et je ne sais pas s'il existe un moyen de le faire.
Quelle est la meilleure façon d'y parvenir ? Aucune de ces méthodes ne semble simple ou intuitive... Existe-t-il une méthode plus directe ? Comment cette exigence est-elle généralement mise en œuvre ?