2017-11-18 3 views
-2

私のMySQLではフィールドID、価格、日付フィールド(タイムスタンプ)があります。2つの列の合計を取得し、変数に保存します

月の終わりに、その月の総費用を計算し、変数$ monthjulyに保存します。

SELECT SUM(price) FROM app WHERE YEAR(datum) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH) AND MONTH(datum) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)" 

私は、出力結果には、このコマンドを使ってみましたが、私はこのmetodで任意の結果を得ていないのです。 ここで私の間違いはどこですか?

+2

これを解決するために試したことが何であったかはわかりました。質問を投稿する前にこれを研究したことがわかりました。 試してみると、あなたも学びます。誰かがあなたに答え/解決策を与えたら、それは何のためでもないでしょう。私は/あなたの未来のためにこれを言います。 投稿が失敗した可能性のあるものを含むように編集できます。それでもあなたの努力を示しています。私たちはいつも助けてくれることを嬉しく思います:-) –

+0

はいフレッド、私は書いたことはありませんでしたが、私はこの問題を解決するまで前進することはできません。申し訳ありませんが、質問。 月(データム)= MONTH(CURRENT_DATE - INTERVAL 1 MONTH) - アプリ YEAR(データム)= YEAR(INTERVAL 1 MONTH CURRENT_DATE)FROM SELECT SUM(価格)」 – FabianCannes

+1

@FabianCannes、ことを見ていなかったあなたあなたの投稿を編集しました。働いているSQL文で私の答えを更新しました。基本的に集計SUMを使用していますので、GROUP BYも必要です。 – PatrickSJ

答えて

1

編集: データのグループ化なしでSUMを実行しています。データを集約するときは、グループ化する必要があります。この場合、私たちは年と月でグループ化します。

デモ - http://sqlfiddle.com/#!9/d952a3/1

SELECT SUM(price), year(datum), month(datum) 
FROM app 
WHERE 
    YEAR(datum) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH) 
    AND MONTH(datum) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH) 
GROUP BY YEAR(datum), MONTH(datum) 
+0

ここにメールがどのように適用されるか分かりません。 – tadman

+0

OPは元々彼/彼女は結果を得て、cronの仕事によって制御されたタイミングでそれらをメールしたかった。 – PatrickSJ

+0

それはコメントにあったならそれは引っ込められているので、あなたはここの雑草にいると思う。 – tadman

0

私はあなたの条件を達成するための機能のあなた概要を共有していますので、あなたは、サーバー、アプリケーションとDBの詳細については言及されていません。

手順1:URLを使用して呼び出すアプリケーションに関数を追加する必要があります。機能の上に呼び出すために日常的に設定されたcronジョブ:およびその機能は、次のコード

function foo() { 
    // compare today date and check is it last day of month or not 
    if($islastday) { 
     // fetch data from sql current month 
     //SELECT sum(cost) 
     //FROM table 
     //WHERE MONTH(date field) = MONTH(CURRENT_DATE()) 
     //AND YEAR(date field) = YEAR(CURRENT_DATE()) 

     //write mail function and send mail with email template providing it 
     sql data 
    } 
} 

ステップ2を持っていなければならないはずです。

ありがとうございました。

関連する問題