はのは、次のように私は単純化されたテーブル構造を持っていると言うところの追加が加入解消参加しますテーブルAとテーブルBの間の最初の結合が満たされていれば、テーブルB→テーブルC→テーブルDに参加したいと思っています。表B - >表C - >表Dは、INNERとなるように結合しますテーブルAとテーブルBとの間の最初の結合が満たされるという点で存在する.-Oracleは、条件付きの不要な
また、表DのWHERE条件も必要とする。
本質的に、TABLE_B、TABLE_C、TABLE_Dの間のLEFT JOIN 'を削除したいのですが、TABLE_AとTABLE_Bの間で結合が満たされない場合があります。
非常に単純化されたデータですので謝罪します!
| Table A |
| ID |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| Table B |
| ID | AID |
| 1 | 5 |
| Table C |
| ID | BID |
| 1 | 1 |
| Table D |
| ID | CID | Value |
| 1 | 1 | ABC |
私が参加解消したい理由は、あなたができる表Aの5行の4のために、私は不要なのやってることは表Dに値を取得するために、3つのテーブル間で結合していること
サンプルデータと望ましい結果が役立ちます。しかし、SQLには「条件付き結合」というものはありません。作業中のクエリをそのまま残してください。 –
サンプルデータで更新された質問..テーブルDの値を取得するために3つのテーブルに渡ってテーブルAの5行のうち4つのテーブルの不要な結合を削除する必要がある理由がわかります – Basq
この疑問の裏に推論が何であるか説明してください。パフォーマンス?不要な結合(あなたが呼び出したとき)は、一致する値がない場合でも起こりません。さらに、 'D.Value'は' A'のレコードと直接の関係がないので、結合をバイパスすることも意味をなさない。 –