- ベストアンサー
[MYSQL] GROUP BY による結果レコードの取得について
こんにちは。 今回は MYSQL の GROUP BY によって、複数レコードのグループ化を行った場合についてお尋ねしたいです。 id, val という二つのフィールドをもつテーブルがあったとして、複数レコードに対して、id でグループ化を行うとします。 その時、val の合計を求めたいのですが、 SELECT id,SUM(val) FROM tablename GROUP BY id となる SQL構文により SUM(val) を取得します。 この場合、SUM(val) を降順にソートした結果レコードを得ることはできますでしょうか? 通常は ORDER BY を用いてこれを行うと思うのですが、このケースではよくわかりません。 また、PEAR によって、これらの結果レコードを連想配列で取得しようと思っています。 結果レコード $rs に対して、 $data = $rs->fetchRow(DB_FETCHMODE_ASSOC); とすると、 $data の連想配列のキーが SUM(val) となってしまいます。 変数に括弧が含まれるのは具合がよくないので、これらを回避する方法はありませんでしょうか? 以上2点おわかりの方がいればお答えいただけないでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
SQLのほうだけ。 >この場合、SUM(val) を降順にソートした結果レコードを得ることはできますでしょうか? 序数で指定 SELECT id,SUM(val) FROM tablename GROUP BY id ORDER BY 2 desc
その他の回答 (1)
- coco1
- ベストアンサー率25% (323/1260)
as句ではダメでしたっけ? sum(val) as @@@
お礼
ありがとうございました。 指定された方法で、置き換えができました。
お礼
検索によって詳しいマニュアルを見つけました。 PostgreSQL の方ですが、ようやく理解できました。 http://www.postgresql.jp/document/pg702doc/user/sql-select.htm ありがとうございました。
補足
ありがとうございます。 降順にソートされた結果レコードを得ることができました。 一度、ORDER BY SUM(val) DESC といった方法で行ったのですが、できませんでした。 また HAVING も試しに用いてみたのですができませんでした。 この序数はどのようなケースで使うことができるのでしょうか?また、この数字は何を示しているのでしょうか。(単に2番目としか思いつかないのですが・・・) MYSQL のリファレンスを見たのですが、序数についての記述を探し当てることができませんでした。 加えて質問になりますが、教えていただけないでしょうか。