- ベストアンサー
テーブルの結合(GROUP BY句の制約について)
次のような操作がしたいのですが、 Test1 t1 1 2 Test2 tt1 tt2 tt3 1 1 aa 1 2 bb -ココ 2 1 cc 2 2 dd 2 3 ee -ココ 結果 Test1とTest2を関連付けて t1 tt1 tt2 tt3 1 1 2 aa 1 2 3 ee Test2.tt2をマックス関数での参照です。 一応次のような操作をしてみました。 select T1, X.tt1, X.tt2, X.tt3 from Test1 inner join (select tt1, max(tt2) as tt2, tt3 from Test2 group by tt1, tt3) as X on (t1 = X.tt1) group by句にtt1とtt3を付けいるせいか、 すべて(Test1とTest2)が表示されます。 groupBY句の制約のせいですが・・・ 何かアドバイス等がありましたら、宜しく御願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
回答No.3
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
回答No.2
お礼
ご丁寧な解説。誠にありがとうございます。 頭が下がります。 >>※単純なselect文では、同時にtt3列の値は得られない 素人がよく陥る場所だということが、chukenkenkou様には 分かっているようですね。 汚いソースだとは思いますが、自分なりもう一度 考えてみたので。晒します。 select t1.t1, X.tt1, X.tt2, Y.tt3 from (Test1 t1 inner join (select tt1, max(tt2) as tt2 from Test2 group by tt1) as X on (t1.t1 = X.tt1)) inner join (select tt1, tt2, tt3 from Test2 ) as Y on (X.tt1 = Y.tt1 and X.tt2 = Y.tt2) order by t1, tt1 いろんなやり方があると感じました。 誠に有難う御座いました。