3つのテーブルを結合した場合のWHERE
MySQLで3つのテーブルを結合した場合のWHEREがよくわかりません。
まず、下のような2つのテーブルがあるとします。
【テーブルaa】
ID | Name
--------------
1 | x
2 | y
3 | z
【テーブルbb】
ID | hizuke | category
---------------------
1 | stamp1 | a
1 | stamp2 | b
1 | stamp3 | c
2 | stamp1 | a
2 | stamp2 | d
3 | stamp1 | c
この2つのテーブルを結合して、同じIDでhizukeが最大値のデータを抽出するクエリは、
http://okwave.jp/qa/q6918385.htmlを参考にして、
SELECT aa.Name, bb.category FROM bb
INNER JOIN aa ON aa.ID = bb.ID
where (bb.ID, bb.hizuke) in (SELECT bb.ID, max(bb.hizuke) FROM bb group by bb.ID ) ;
でできました。
しかし、もう1つテーブルを結合すると期待した結果が得られなくなってしまいました。
【テーブルcc】
category | choice
---------------------
a | ss
b | tt
c | uu
というテーブルがあって、上のクエリで得られた bb.categoryと cc.categoryをリンクして、choiceを取得しようとしたのですがうまくいきません。
SELECT aa.Name, bb.hizuke, bb.category, cc.choice FROM bb
INNER JOIN cc ON bb. category = cc. category
INNER JOIN aa ON aa.ID = bb.ID
where (bb.ID, bb.category, bb.hizuke) in (SELECT bb.ID, bb.category, max(bb.hizuke) FROM bb group by bb.ID );
というクエリでは、ダメなようです。
INNER JOINを入れ子にしたり、いろいろと試したのですがどうにもうまくいきません。
どうも私の力では解決困難なようです。どなたかヘルプを。
補足
教えて!goo > コンピューター [技術者向け] > データベース > MySQL