顧客テーブル
kokyaku_id
kokyaku_name
1
aaa
2
bbb
3
ccc
4
ddd
売上テーブル
uriage_date
kokyaku_id
kingaku
2000-1-1
1
100
2011-12-1
2
200
2010-2-2
2
300
2009-3-1
1
50
2006-5-29
3
300
2007
3
400
2012-9-20
3
100
kokyaku_name | uriage_date
aaa | 2009-3-1
bbb | 2011-12-1
ccc | 2012-9-20
顧客dddは売上がないので当然結果には出てこなくてOKです。
何結合でどのようなクエリにすればよろしいでしょうか。
まだDBを初めて2週間なので、ご教示お願い致します。
こんな感じで(ソートはとりあえず顧客テーブルのkokyaku_idの昇順にしておきました)
select
a.kokyaku_name ,
max(b.uriage_date)
from
顧客テーブル as a inner join 売上テーブル as b on a.kokyaku_id=b.kokyaku_id
group by
a.kokyaku_name
order by
a.kokyaku_id asc
;
MySQL、PostgreSQLの例
(GROUP BYするのは動作コストが高くなるので、単純に結合させてます)
SELECT kokyaku_name , (SELECT uriage_date FROM t_uriage AS b WHERE b.kokyaku_id = a.kokyaku_id ORDER BY uriage_date DESC LIMIT 1) AS uriage_date FROM m_kokyaku AS a;
別名にASを使っているということはAccessなのかもしれませんね・・・
Accessの例
SELECT kokyaku_name , DMax("uriage_date", "t_uriage", "kokyaku_id = " & kokyaku_id) AS uriage_date FROM m_kokyaku AS a;
いずれも動作確認済みのものです
これで結合させてみましたが、先に進めません…