1
                   membership table
                         membership start date 2011-01-10
                         membership end date 2012-09-08
                         membership monthly amount £120.00
                         member_Id

                    member table
                       member_id

メンバーは毎月10日にお金を支払います...メンバーがこの日付2011-05-15までに支払った合計金額を取得できますか?mysqlクエリを使用して可能ですか?

これは皆さんが提案したSQLクエリです

                    SELECT TIMESTAMPDIFF(MONTH, membertomships.memberToMship_StartDate, MIN(membertomships.memberToMship_EndDate,'2011-7-06'))* memberToMship_ChargePerPeriod FROM membertomships WHERE membertomships.member_Id = '1';

しかし、memberToMship_EndDate、'2011-7-06'で、日付memberToMship_EndDateとこの日付'2011-7-06'の間にエラーが発生していました。

エラーが発生した理由を説明していただけますか

4

3 に答える 3

1
SELECT TIMESTAMPDIFF(MONTH, start_date, MIN(end_date,'2011-05-15')) * amount from membership where membershipId=@memberdshipId

現在の日付も含めるために......。

 SELECT TIMESTAMPDIFF(MONTH, start_date, MIN(end_date,'2011-05-15')) * amount ,TIMESTAMPDIFF(MONTH, start_date, MIN(end_date,CURDATE())) * amount from membership where membershipId=@memberdshipId

これはmssqlserverで正常に機能しています。mysqlsyntexに変更してください

select datediff(Month,startdate,enddate)*amount as Enddateamount,
datediff(Month,startdate,'12/6/2010')*amount as amountongivendate,
datediff(Month,startdate,getdate())*amount as amounttoday
 from membership

SQLサーバーのスクリーンショット

于 2011-07-06T09:31:37.713 に答える
0

あなたの質問はあまり明確ではありません、私はあなたがスキーマを適切に説明したとは思いません。それぞれが支払ったすべての合計を取得したい場合:

select sum(amount) from membership group by member_id

日付またはmember_idで制限したい場合は、where句を自由に追加してください。

http://dev.mysql.com/doc/refman/5.0/en/select.html

于 2011-07-06T09:23:22.813 に答える
0

すべての支払いテーブルではなく、サブスクリプションデータしかないのではないでしょうか。次に、そのようなステートメントが必要です

SELECT TIMESTAMPDIFF(MONTH, '2011-01-10', MIN('2012-09-08', '2011-05-15')) * 120.00

もちろん、定数を列名とパラメーターに置き換える必要があります。

もちろん、これは、支払い日10がサブスクリプションの開始日に依存し、顧客が時間どおりに支払いを済ませていることを前提としています。:)

于 2011-07-06T09:27:04.940 に答える