0

データベースの関数を書くのに助けが必要です。サインアップ日に基づいて、毎月のメンバー注文の合計コストを追跡したいと考えています。そのため、誰かが月の途中でサインアップした場合、関数はサインアップ日に 30 日を追加し、その期間内の売上を合計してデータベースに配置する必要があります。次に、ユーザーページに表示します。mysql 関数の使用 (現時点では PDO や mysqli ではありません)。

何かのようなもの:

<?php
     $query = ("SELECT SUM(cost) FROM memberOrders WHERE 
              memberNumber='$memberNumber' GROUP BY signupdate+30days");
?>

しかし、30日だけではいけません...+30、+60、+90でなければなりません...それが私がこだわっている部分です。ありがとう!

4

2 に答える 2

0

にサインアップ日と注文日の両方があると仮定するとMemberOrders、以下は注文のあるすべての月を返します。

SELECT datediff(orderdate, signupdate, interval month) as MonthsAfter,
       SUM(cost) as MonthCost
FROM memberOrders
WHERE memberNumber='$memberNumber'
GROUP BY datediff(orderdate, signupdate, interval month)

すべての月が 30 日である場合、次のことができます。

SELECT floor(datediff(orderdate, signupdate, interval day)/30) as Months,
       SUM(cost) as MonthCost
FROM memberOrders
WHERE memberNumber='$memberNumber'
GROUP BY floor(datediff(orderdate, signupdate, interval day)/30)

注: どちらも、サインアップ後の最初の月に「0」を割り当てます。+11から始めたい場合は追加してください。

于 2013-01-06T18:49:29.407 に答える
0

PHP で開始日/終了日を計算し、サブクエリを利用します。

SELECT SUM(cost) FROM 
      (Select cost, membernumber from memberOrders WHERE 
      memberNumber='$memberNumber' and date >= '$startdate' and date <= '$enddate' 
      GROUP BY substr(date, 7))
GRoup by membernumber
于 2013-01-06T18:35:26.147 に答える