2012-03-13 5 views
0

としていくつかの列を選択すると、私は、クエリの設計に問題がある:私は、基準に基づいていくつかのレコードを選択する必要がテーブル

  1. (SELECT COL_1, COL_2,COL_3 FROM TABLE_1 WHERE COL_3 = 'CND') 
    
  2. 今、私は2つのデータベースからレコードを選択する必要がありますこれらの結果に基づいて、

    (SELECT XX_1, XX_2 
    FROM TABLE_2 WHERE TABLE_2.XX1 = TABLE_1.COL1 
    (from filtered results in step 1) 
    
  3. (SELECT YY_1, YY_2, YY_3 
    FROM TABLE_3 WHERE TABLE_3.YY_2 = TABLE_1.COL2) 
    (from filtered results in step 1) 
    
  4. Iは

    XX_1, XX_2, YY_1, YY_2, YY_3 
    

挙げ列が結果、そのような等価を有する唯一のレコードがフェッチされるべきであると等しくなければならない単一のテーブルビューに結果を必要とします。

私はそれはつもりので、私のため、実行することはできません任意のデシベル特定/ SQLコマンドを示唆しないでください、Javaクラスで使用されますレコードの数百万人でこれを実行する必要があり、その性能は

考えられている

私は、読み取り以外のDBパーミッションを保持していません。

希望です。そうでない場合は、疑問を説明します。

私はこの

SELECT * 
FROM TABLE_2 
JOIN 
(SELECT COL_1, 
    COL_2, 
    COL_3 
FROM TABLE_1 
WHERE COL_3 = 'CND' 
GROUP BY COL_1) TMP_TABLE 
ON (TMP_TABLE.COL_1 = TABLE2.XX_1) 

のようなものを試してみました。しかし、私は、ビュー/テーブルが存在しないだ - Oracleエラーを。

+1

あなたはhttp://en.wikipedia.org/wiki/Join_(SQL)を参照する必要があります – YXD

答えて

1

私は参加uはそれから列を選択することができます。これは、usedrowsはjoin.and後に作られた仮想テーブルである一例であり、単にこの

select col_1,col_2 

from(

    select col_1,col_2 

    from (

    select col_1,col_2 from table_1 

)tbl1 

    left join table_2 tbl2 on tbl2.col_1 = tbl1.col_1 

)tbl3 

left join table_3 tbl3 on tbl4.col_1 = tbl3.col_1 
+0

私はまだテーブルやビューが存在していません。 –

+0

ありがとうございました。私は誤ったタイプミスを犯し、私にエラーを表示させました。 –

+0

probs、あなたの歓迎、チェックすることを忘れないでください –

0
with usedrows as 
(select a.Col_1,a.Col_2 FROM table1 a left JOIN table2 b ON a.Col_1=b.Col_2) 
select Col_1,C0l_2 from usedrows 

のように、あなたはサブクエリを使用する必要があると思います他のテーブルから選択してください。

関連する問題