• ベストアンサー

サブクエリなしでSQL一発で取得できるでしょうか?

MySQLは、4.0だとサブクエリが使えず困っています。 やりたいことは、 マスターテーブル 1 : n 更新履歴テーブルの関係で、 マスターテーブルのレコード一覧の中に、 更新履歴テーブルの最新の更新時刻だけを表示したい。 ・マスターテーブル(mt) Key1 ・・・・・dataN ・更新履歴テーブル(ut) Key1 ・・・・・update_date ■一覧イメージ mt.key1 mt.data1 mt.data2 mt.data3 ut.update_date

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

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.2

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

natsuyori
質問者

お礼

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

その他の回答 (2)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

#1です。#2の方のSQLで出来ますね。 ちょっと勘違いしてました。 失礼しました。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

>MySQLは、4.0だとサブクエリが使えず困っています。 最新の更新時刻だけを取ってくるビューを作るしかないですね。 そうしたら出来ますよ。

natsuyori
質問者

お礼

基本的にはできないんですね。 両方のテーブルに更新時刻を書き込む方法で考えてみます。ありがとうございました。