• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQLでの売上集計)

MySQLでの売上集計の方法

このQ&Aのポイント
  • MySQLのSQLで売上集計を行う方法について質問します。
  • slipテーブルとsalesテーブルを結合して、特定の会員の一ヶ月前の売上金額の合計を算出したいです。
  • 直近のSQLで格闘しているが、期待する結果を得ることができていない状況です。アドバイスをいただけると幸いです。

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

  • ベストアンサー
  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

>MySQLのSQLに関する質問ですが、変数で処理して >いるため、PHPカテゴリで質問させて下さい。 発想が逆です。まずMySQLでキチンと動くSQL文を組み立ててから、それの一部を(プレースホルダなどを使って)変数に置換する順番でやるべきです。 MySQLのマニュアルを読んだりphpMyAdminなどでSQL文を実行させて試行錯誤せずに、どうやってSQL文を覚えるのでしょう・・・ >FROMの前にmember_noやsale_slip_no、slip_noなどのカラムを記述するとエラーになったりで、 selectに記述した列は(sumの項目があるので)group by に記述していないといけません(その項目毎に集計すると明示する)。 select slip.member_no, sum(request_money) as total from sales join slip on sales.sales_slip_no = slip.slip_no group by slip.member_no where (ここにwhere条件を列記) where条件にmember_noがあるなら(特定のメンバーの合計だけでいいなら)selectにslip.member_noは不要ですし、griup by もしなくていいです。 select sum(request_money) as total from sales join slip on sales.sales_slip_no = slip.slip_no where (ここにwhere条件を列記) とりえあずphpMyAdminでSQL実行して「どういうエラーになるか」(ここがおかしいという部分が表示されるハズです)を確認してください。 なお「php」という話で言えばネイティブなMySQL関数を使っている時点で論外です。今から書くのであればMySQLiもしくはPDOで書きましょう。

a4_chapp
質問者

お礼

agunuzさま ご親切なアドバイスをありがとうございます。 また、ご挨拶が遅れて申し訳ありません。 > なお「php」という話で言えばネイティブなMySQL関数を使っている時点で論外です。 > 今から書くのであればMySQLiもしくはPDOで書きましょう。 やはりそうなんですね。自身、PHPとMySQLをサイト構築のために同時に勉強を始めた(当初購入した本が同時に話を進めていた)ので、うまく言えませんが同じ延長線上で物事を考えていました。 まだ、一部WEHER句においてMySQLでの関数が残っているので、この処理をどうしようか?など課題はありますが、SQLを見直し期待している結果を得ることが出来ました。 貴重なアドバイスをありがとうございます。

その他の回答 (1)

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

途中経過をすっとばすとして $one_month_buy_money = $sum_point['SUM(request_money)']; でSUMした集計値を変数に取り込めないというだけの話であれば $sql = "SELECT SUM(request_money) AS total ・・・"; というように別名を付けておき $one_month_buy_money = $sum_point['total']; のように別名でアクセスします

a4_chapp
質問者

お礼

yambejpさま お世話になっております。毎度ご親切なアドバイスをありがとうございます。 また、ご挨拶が遅れて申し訳ありません。 まだまだ理解が乏しい身、分かっているようで分からないことだらけで、色々なアドバイスはとても勉強になります。 今回のASでの指定の仕方、勉強になりました。 まだまだ見直すべきところがありますが、とりあえず正常に稼働するまでに至りました。 ありがとうございました。

関連するQ&A