これは少し複雑ですが、2つのテーブルがあります。構造が次のようなものであるとしましょう:
*Table1*
ID
PhoneNumber1
PhoneNumber2
*Table2*
PhoneNumber
SomeOtherField
テーブルは、Table1.PhoneNumber1-> Table2.PhoneNumber、またはTable1.PhoneNumber2-> Table2.PhoneNumberに基づいて結合できます。
次に、PhoneNumber1、PhoneNumber1、PhoneNumber2に対応するSomeOtherField、およびPhoneNumber2に対応するSomeOtherFieldを含む結果セットを取得します。
これを行うには2つの方法を考えました。テーブルを2回結合するか、ON句でORを使用して1回結合するかのどちらかです。
方法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
私はこれをまだ動作させることができていません。それを行う方法があるかどうかはわかりません。
これを達成するための最良の方法は何ですか?どちらの方法も単純でも直感的でもないように思われます...これを行う簡単な方法はありますか?この要件は通常どのように実装されますか?