- ベストアンサー
サブクエリなしでSQL一発で取得できるでしょうか?
MySQLは、4.0だとサブクエリが使えず困っています。 やりたいことは、 マスターテーブル 1 : n 更新履歴テーブルの関係で、 マスターテーブルのレコード一覧の中に、 更新履歴テーブルの最新の更新時刻だけを表示したい。 ・マスターテーブル(mt) Key1 ・・・・・dataN ・更新履歴テーブル(ut) Key1 ・・・・・update_date ■一覧イメージ mt.key1 mt.data1 mt.data2 mt.data3 ut.update_date
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
GROUP BY句とMAX()関数を使用すれば、出来ます。 http://www.mysql.gr.jp/Manual/mysql-4.00.12/manual.ja_Reference.html#SELECT http://www.mysql.gr.jp/Manual/mysql-4.00.12/manual.ja_Reference.html#IDX1369 例) Key1がmtの主キーでutの外部キーである場合---------------------- SELECT mt.key1, mt.data1, mt.data2, mt.data3, MAX(ut.update_date) FROM mt, ut WHERE mt.Key1 = ut.mKey1 GROUP BY mt.key1, mt.data1, mt.data2, mt.data3
その他の回答 (2)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
#1です。#2の方のSQLで出来ますね。 ちょっと勘違いしてました。 失礼しました。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>MySQLは、4.0だとサブクエリが使えず困っています。 最新の更新時刻だけを取ってくるビューを作るしかないですね。 そうしたら出来ますよ。
お礼
基本的にはできないんですね。 両方のテーブルに更新時刻を書き込む方法で考えてみます。ありがとうございました。
お礼
GROUP BY で、親テーブルのキーを指定することで 目的を達成できました。ありがとうございます(^^) SELECT mt.key1, mt.data1, mt.data2, mt.data3, MAX(ut.update_date) FROM mt, ut WHERE mt.Key1 = ut.mKey1 GROUP BY mt.key1