内部表の集約結果でJOINする
よくあるgroup byでの集約結果でjoinしたい。というやつ。
駆動表
駆動表id | 駆動表name | |
---|---|---|
1 | AAA | |
2 | BBB | |
3 | CCC |
内部表
内部表id | 駆動表id | 内部表name | |
---|---|---|---|
1 | 1 | AAAの古いデータ | |
2 | 1 | AAAの古いデータ | |
3 | 1 | AAAの最新データ | |
4 | 2 | BBBの古いデータ | |
5 | 2 | BBBの最新データ |
とあった時、
駆動表id | 駆動表name | 内部表id | 内部表name | |
---|---|---|---|---|
1 | AAA | 3 | AAAの最新データ | |
2 | BBB | 5 | BBBの最新データ | |
3 | CCC |
こういったデータ欲しい時がよくある。
一度、集約した内部表と結合した後、もう一度、name取得の為、内部表と結合する方法がわかり易い。
作成SQLはこんな感じ。
select * from 駆動表 join ( select 駆動表id, max(内部表id) as 内部表id from 内部表 group by 駆動表id ) A on 駆動表.駆動表id = A.駆動表id join 内部表 on A.内部表id = 内部表.内部表id order by 駆動表.駆動表id