• ベストアンサー

SQLでグループ化して降順表示がうまくいきません

個人的にMysql、php環境でサイトを作っております。 そこで、素人質問で申し訳ありませんが、SQLでお伺いしたい点があります。 例えば下のようなテーブルがあります。 ▽果物テーブル 果物ID | 果物名 | 売れた日付 1 | リンゴ | 2008/11/1 2 | みかん | 2008/11/2 3 | みかん | 2008/11/3 4 | リンゴ | 2008/11/4 これを、 『最近売れた』果物順に、『グループ化』して並べ替えたいと思い、 下記のようなsqlを組みました。 $sql = "SELECT 果物名, FROM 果物テーブル GROUP BY 果物名 ORDER BY 売れた日付 DESC"; 意図としてはリンゴ、みかんの順に並べ替えたいのですが、 みかん、リンゴの順に表示されてしまいます。 想像では、グループ化したとき、古い日付の方が残ってしまい、 | リンゴ | 2008/11/1 | みかん | 2008/11/2 この部分を対象にして日付を降順にしてしまうからだと思うのですが、 これをうまく解決する方法が分かりません。 MSアクセスなどですと先に二重にクエリをかけるなどすることで 「先に降順で並べ替えたクエリを出し、その後グループ化させる」 など処理が簡単なのですが、phpではどうするのかいまひとつ分からず・・・ 申し訳ありませんがよろしくお願いします。

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

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

>『最近売れた』果物順 でしたら日付のMAXを拾ってみては? SELECT 果物名,MAX(売れた日付) AS 売れた日付 FROM 果物テーブル GROUP BY 果物名 ORDER BY 売れた日付 DESC

evolaevola
質問者

お礼

ありがとうございます。 解決しました。 このような出し方があるのですね。勉強になりました。

その他の回答 (1)

  • koke29
  • ベストアンサー率58% (114/196)
回答No.2

SELECTの売れた日を max(売れた日) as day で order by day DESC にすると最新日付のデータでソートできました $sql = " SELECT 果物名,max(売れた日) as day FROM 果物テーブル GROUP BY 果物名 ORDER BY day DESC "; as の後は任意なので適当に付けて下さい

evolaevola
質問者

お礼

ありがとうございます。 max、勉強になりました!