-1

4 つの異なるテーブルに対して 4 つの Select クエリがあり、それぞれが 1 つのレコードのみを抽出します。例えば:

Select * from table where col1 = 'something'

3 列の 1 行を返します。

2 番目の選択クエリでも、2 つの列 (フィールド) を持つ 1 つのレコードが得られます。3 番目と 4 番目の選択クエリも同様です。

4 つのすべての ResultSet を 1 つの行を持つ 1 つに結合したいと考えています。それはどのように可能ですか?

私はあなたのためにクエリを書きます

1枚目

Select Top 1 column1,column2 from table 1 where column 1 = 'something' 
and col1 = (Select max(col1) where column 1 = 'something')

2 番目のクエリ

Select Top 1 column1 , column3 from table 2 where column 1 = 'something' 
and column3 = (Select max(column3) where column 1 = 'something')

クエリ 2 から取得した 3 番目のクエリの使用結果

Select column4 ,column3 from table 3 
where column3 = (obtained from 2nd query) (there is only one row)

4位

Select column5 from table 4 
where column3 = (obtained from 2nd query) (there is only one row)

これは、2 番目、3 番目、4 番目のクエリを結合してから、結果セット int 1 を結合する必要があることを意味します。

列が異なるため、ユニオンを使用できません

唯一の問題は、結果セットに参加することです

それが説明することを願っています

結果セット SQL query1

列 1 列 2

ああああああ

SQL クエリ 2

列 1 列 3

あああああああ

SQL クエリ 3

列 3 列 4

cccc dddd

SQL クエリ 4

column3 column5

cccc ええええ

結果セット

コラム1 コラム2 コラム3 コラム4 コラム5

aaa bbb cccc dddd eeee

結果セットがすべてを説明することを願っています

4

2 に答える 2

1

列を追加して、すべてのクエリで列番号と型を同じにします (列が必要ない場合でも)。

Select column4, column3 from table 3 
where column3 = ...

Select column5, column3 from table 4 
where column3 = ...

余談ですが、クエリを大幅に簡素化できるようです。現時点ではかなり混んでいます。

おそらく、質問を言い換えて、何をしようとしているのか、テーブルスキーマが何であるかを英語で説明し、クエリ全体を提案させてください.

于 2012-08-10T05:27:41.227 に答える
0
create table table1(c1 varchar(10), c2 varchar(10), c3 varchar(10), c4 varchar(10), c5 varchar(10));

create table table2(c1 varchar(10), c2 varchar(10), c3 varchar(10), c4 varchar(10), c5 varchar(10));

create table table3(c1 varchar(10), c2 varchar(10), c3 varchar(10), c4 varchar(10), c5 varchar(10));

create table table4(c1 varchar(10), c2 varchar(10), c3 varchar(10), c4 varchar(10), c5 varchar(10));

insert into table1 values (1,2,3,4,5);

insert into table2 values (1,5,3,7,8);

insert into table3 values (1,15,3,17,18);

insert into table4 values (1,22,3,24,25);


  with max3 as
  (select c1, max(c3) c3 from table2 where table2.c1 = 1 group by c1)
  select table1.c1, table1.c2, max3.c3, table3.c4, table4.c5
    from table1
    join max3
      on max3.c1 = table1.c1
    join table3
      on table3.c3 = max3.c3
    join table4
      on table4.c3 = max3.c3
   where table1.c1 = 1;

出力

c1 c2 c3 c4 c5 
 1  2  3 17 25
于 2012-08-10T07:01:56.050 に答える