- ベストアンサー
集計の結果表示について
初めまして。 いろんなアイテムと売れた個数を登録し、重複してるアイテム名はユニーク表示で、個数は合計値で結果表示させたいと思っています。 $sr="select sum(total) from テーブル名 where year group by item"; と記述し、$rs=mysql_query($sr)からnum_rows($rs)で件数を出し、$item=mysql_fetch_array($rs)としてレコード情報を配列で分割して、表示させようと思っています。 この方法ですとsum(total)しか結果表示されません。レコードの全ての結果を表示させるにはどういう記述があるでしょうか? わかりづらい質問ですみませんがよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
「レコードの全ての結果を表示させる」SQLをかいて whileでまわせばよいでしょう。 たとえばこんな感じ (見せ方はご自身で工夫してください) $sql=<<<eof SELECT dataA,dataB,dataC FROM テーブル WHERE 1 AND 条件 eof; $res=mysql_query($sql,$link) or die(mysql_error()); while($rows = mysql_fetch_array($res,MYSQL_ASSOC)){ print "{$rows[dataA]}:{$rows[dataB]}:{$rows[dataC]}<br>"; }
その他の回答 (3)
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
#3です。 sum()関数はあまり使った事が無いので正しいクエリはあやしいです。 この辺参考にされたらいかがでしょうか http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/mysql_12.htm また、 > myadminでやってみると問題なく表示されるので、 とありますが、その時のクエリはどうなってますか? それを記述すれば問題無いと思いますが。
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
PHPと言うより、データベース関係の質問ですね。 テーブル構造が分からないので正しいクエリは分かりませんが、、、 ヒント 重複してるアイテム名はユニーク表示 => DISTINCT http://cyberam.dip.jp/database/postgres/sql/select/select_main.html 全て表示 => * http://www.atmarkit.co.jp/fnetwork/rensai/sql01/sql1.html
お礼
taketan_mydns_jpさん レスありがとうございます。 phpというよりはDB関連でした。教えていただいたサイト参考にさせて頂きます。 一応当方の環境なのですが、Apache2+php+mysqlです。 重複する項目名をDISTINCTを利用する方法は出来ました。 ありがとうございます。 例えば $sql=o"SELECT DISTINCT item from ~ where hogehoge group by hoge"; と記述した際、itemはユニーク表示されます。 で、これに$sql=o"SELECT DISTINCT item,sum(total) from ~ where hogehoge group by hoge"; とした場合、予想では ------------- itemA | 20 | ------------- itemB | 30 | ------------ というふうに表示されるのかな??と思っていたのですが、どうしてもユニーク表示されたitemしか表示されずで ・・・・・難しいです。
- inu2
- ベストアンサー率33% (1229/3720)
select item, sum(total) from・・・ とかじゃダメ?
お礼
inu2さん、レスありがとうございます。 当方もその方法を試したのですが、どうしても itemだけの表示しかされません。totalは行方不明です ・・・・(--; 環境がおかしいのでしょうか??
補足
どうやら表示させる部分の記述が怪しい感じです。 myadminでやってみると問題なく表示されるので、 ソースを再度作り直して確認します。
お礼
yambejpさん、レスありがとうございます。 つまり、集計する文と、全て表示する文を作成しておいて >$res=mysql_query($sql,$link) or die(mysql_error());のmysql_query($sql,$link)のかっこ内に入れるという方法という解釈でよろしいでしょうか?? 早速試してみます、ありがとうございます。