• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:mysqlについて)

MySQLのデータ取得方法について

このQ&Aのポイント
  • MySQLのテーブルから条件に合うデータを取得する方法について教えてください。
  • テーブルの特定の列をまとめて取得し、並び順を指定する方法を教えてください。
  • 複数のテーブルのデータを結合して取得する方法について教えてください。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

ちょっと微妙だけど・・・ 今回の例だとこんな感じ SELECT a1.`type_id`,`member_id`,`date`,b.`name` FROM table_a AS a1 inner join table_b as b on a1.`type_id`=b.`type_id` having ( SELECT COUNT(*) +1 FROM table_a AS a2 WHERE 1 AND a2.`date` < a1.`date` AND a2.`type_id`= a1.`type_id` )<=3 order by `date` asc 今日以降のデータだけをとるなら SELECT a1.`type_id`,`member_id`,`date`,b.`name` FROM table_a AS a1 inner join table_b as b on a1.`type_id`=b.`type_id` having ( SELECT COUNT(*) +1 FROM table_a AS a2 WHERE 1 AND a2.`date` < a1.`date` AND a2.`type_id`= a1.`type_id` )<=3 and a1.`date`>curdate() order by `date` asc

waiiaw
質問者

お礼

遅くなりました。 申し訳ありません。 ありがとうございました。

その他の回答 (2)

  • mooushi
  • ベストアンサー率0% (0/2)
回答No.3

これはいかがですか。 select a.type_id,a.member_id,a.date,b.name, (SELECT count(*) FROM tableA c WHERE c.date<a.date and c.type_id=a.type_id)+1 as rank from tableA a, tableB b where a.type_id=b.type_id having rank<=3 order by a.type_id desc, rank asc ;

waiiaw
質問者

お礼

ご回答ありがとうございます

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

ロジックがわからない >1.type_idでまとめたものを3件ずつ取得 type_id=4の場合、なぜmember_id が51,49,50の順番で選ばれるの? member_id順でも、date順でもないですよね? (date='2012-5-22'が選ばれない理由がわからない) >2.type_idのまとめた三件がdateの直近順 直近ってなんですか? 今現在の日付に一番近い日付ですか?それとも日付が若い順ですか? 同等の日付があった場合どちらがどう優先されるのですか?

waiiaw
質問者

お礼

ご回答ありがとうございます。

waiiaw
質問者

補足

>date='2012-5-22'が選ばれない理由がわからない すみません…これは単純に間違いですね…21, 22, 23となるのが正しいです。 >直近ってなんですか? こちらもすみません、正しくは今現在に一番近い日付です。 そして出来れば過去のものは省きたいです。 (そう考えるとtype_id=4は全て省かれる形になると思います。) >同等の日付があった場合どちらがどう優先されるのですか? member_idの若い順にしたいです。 すみませんが…どうぞよろしくお願いいたします。

関連するQ&A