0

table1 と table2 の 2 つのテーブルがあります。

Table1 is as below:
col1 | col2 | Col3
 A     10     X
 B     11     X
 C     10     X
 A     20     X

表 2 は次のとおりです。

col1 | col2 | col3 | col4
 A      10     1     UDHAY
 B      11     2     VIJAY
 C      10     1     SURESH
 A      20     2     ARUL
 A      10     3     UDHAY
 B      11     4     VIJAY
 C      10     4     SURESH
 A      20     5     ARUL

以下のように3つの結合条件でtable2の列col4を表示したい。

    table1.COl1 = table2.COl1
and table1.COl2 = table2.COl2
and table2.COl3 = '1'

サンプルクエリ:

   select   
   table2.col4 
    from table1 
    left outer join table2 
    on(
        table1.COl1 = table2.COl1
        and table1.COl2 = table2.COl2
        and table2.COl3 = '1'); 

table2.col4質問:条件 table2.col3 1,2,3,4,5 を table1 の他の条件と一致させて表示したい場合、スクリプトの作成方法を教えてください。

実際、同じテーブルを異なるエイリアス名で5回追加して印刷できることを知っています。しかし、同じ条件を5回繰り返したくありません。条件のみがwhere5 つの値すべてに共通である必要があります。


2013 年 10 月 30 日に追加:

ご返信ありがとうございます。INを使用して言及したのとは異なります。現在、以下のスクリプト コンセプトを使用しています。

  select  A.col1,A.co2,B1.col4 ,B2.col4,B3.col4.B4.col4
  from table1 A
  left outer join table2 B1
  on(
    A.COl1 = B1.COl1
    and A.COl2 = B1.COl2
    and B1.COl3 = '1')
left outer join table2 B2
     on(
    A.COl1 = B2.COl1
    and A.COl2 = B2.COl2
    and B2.COl3 = '2')
left outer join table2 B3
     on(
    A.COl1 = B3.COl1
    and A.COl2 = B3.COl2
    and B3.COl3 = '3')
left outer join table2 B4
     on(
    A.COl1 = B4.COl1
    and A.COl2 = B4.COl2
    and B4.COl3 = '4');

したがって、私の出力は次のようになります。

 A | 10 | UDHAY | |UDHAY| |
 B | 11 | | VIJAY| | VIJAY |
 C | 10 | SURESH | | | SURESH |
 A | 20 | | ARUL | | |

しかし、上記のスクリプトのように、25 の組み合わせ (1 から 25) に対して作成する必要があります。したがって、上記のようにスクリプトを作成すると、スクリプト行は 200 行以上になります。それを避けるために、スクリプト行を減らして同じ出力を得るための他の方法を提案していただけませんか?

4

2 に答える 2

0

私はあなたを正しく理解しているかどうか確信が持てません。このようなことを意味していますか?

and table2.COl3 IN ('1','2','3','4','5')
于 2013-10-29T19:21:15.287 に答える
0

最初の解決策 (些細な方法): 結合のセット全体を含むビューを作成し、代わりにスクリプトでクエリを実行します。これは少し危険ですが、スクリプトを短くします。データ セットが規模を超えて大きくなってしまった場合は、代わりにマテリアライズド ビューに切り替えて、コストのかかる計画を簡素化できます。

2番目の解決策(それほど簡単ではありません):テーブルに命名規則がある場合は、PLブロックを作成してループし、結合するテーブルを一周して配列し、実行時に結合を文字列に連結できるようにすることができます動的 SQL として実行します。

于 2013-10-31T19:28:30.793 に答える