こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

最新の行だけを抽出するSQL文

このジャンルでお願いします。

t1テーブル
id name
1  aaa
2  bbb
3  aaa

t2テーブル
id t1_id num
1  1   10
2  2   100
3  1   1000
4  3   1

このようなテーブル構成で、
t1のnameが「aaa」
かつ
t2のidが最新の行だけnumを合計した数値を得たいのですが、

この例だと、
まずt2テーブルの

id t1_id num
1  1   10
3  1   1000
4  3   1

が該当して、t2のidが最新の行だけなので

id t1_id num
3  1   1000
4  3   1
に絞られて、1000+1で「1001」という結果が得たいのです。
どのようなSQL文にすれば良いのでしょうか?

投稿日時 - 2014-01-04 15:46:15

QNo.8413288

すぐに回答ほしいです

質問者が選んだベストアンサー

#1ですが間違いありました。セミコロンの前を訂正

select sum(t2.num)
from t1, t2,
(select t1_id, max(id) as max_id from t2 group by t1_id) t2w
where t1.name = 'aaa'
and t1.id = t2w.t1_id
and t2w.max_id = t2.id
;


でした

投稿日時 - 2014-01-04 16:26:06

お礼

すみません、
こちらですね。
出来ました。ありがとうございます。

投稿日時 - 2014-01-04 17:32:15

このQ&Aは役に立ちましたか?

9人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

無試験ですが

select sum(t2.num)
from t1, t2,
(select t1_id, max(id) as max_id from t2 group by t1_id) t2w
where t1.name = 'aaa'
and t1.id = t2w.t1_id
and t2w.id = t2.id
;

投稿日時 - 2014-01-04 16:23:36

お礼

ご回答ありがとうございます。
そのやり方でできました。
参考になりました。

投稿日時 - 2014-01-04 17:31:04