同じテーブルを 2 回結合する: 最良のアプローチを理解する
複数のテーブルを操作する場合、テーブルを 2 回結合するというタスクに直面するのが一般的です。同じ列を複数回。この課題は、別のテーブルの異なる列にリンクされた同じテーブルの情報が必要な場合に発生します。
指定されたシナリオでは、Table1.PhoneNumber1 と Table1.PhoneNumber2 に基づいて結合する、同様の構造を持つ 2 つのテーブルがあります。目標は、PhoneNumber1、PhoneNumber1 に対応する SomeOtherField、PhoneNumber2、および PhoneNumber2 に対応する SomeOtherField を含む結果セットを取得することです。
方法 1: 複数の結合
最初のメソッド以下に示すように、同じテーブルで 2 回結合する必要があります:
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: OR 条件
2 番目のメソッドは、次を使用してクエリを簡素化しようとします。 ON 句の OR 条件:
SELECT ... FROM Table1 INNER JOIN Table2 ON Table1.PhoneNumber1 = Table2.PhoneNumber OR Table1.PhoneNumber2 = Table2.PhoneNumber
ただし、このアプローチには追加の処理が必要であり、意図した結果が得られない可能性があります。 result.
最良のアプローチ
推奨されるアプローチは、方法 1 を使用し、結合ごとに明確なエイリアスを使用してテーブルを複数回結合することです。この方法は信頼性が高く、正確なデータ取得を保証します。
リファクタリングに関する考慮事項
電話番号をナチュラル キーとして使用すると、メンテナンスの問題が発生する可能性があることに注意してください。頻繁に変更します。データの整合性を維持するために人工キーの使用を検討してください。
以上がテーブルをそれ自体に複数回効率的に結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。