2017-06-28 12 views
0

は、私が何をしたいのか、特定のユーザーの特定の量を計算することである。..PHP SUM()関数で間違った計算

ここに私のテーブルだ

load_up_id user_id amount 
1   1   1000 
2   1   1000 
3   1   2000 
4   2   3000 
5   2   1000 

I合計金額はuser_idになります。 1、代わり4000の、それは私に2000

を与えるここに私のコードだ

$loadups = $this->loadupPayment->where('user_id', $this->auth->user()->user_id)->get(); 

$total_loadup = $this->loadupPayment->select(db::raw('sum(amount) as total_loadup'))->groupBy('user_id')->get(); 

事前にみんなにありがとう! :D

+0

実行中であると主張しているものに似ている_any_クエリが2000の合計額になる可能性はありません。これが実際に使用したコードとデータですか? –

+0

キーワードでグループ化する理由は? – Confused

+0

DBエンジンは、group byステートメントのときにその型の最後の行を取得すると仮定します。それでも2000 + 1000 = 3000になることが期待されます。 – JParkinson1991

答えて

1

特定のユーザーのIDが必要ですか?代わりにこの方法を試してください。

$total_loadup = $this->loadupPayment->select(db::raw('sum(amount) as total_loadup'))->where('user_id', $this->auth->user()->user_id)->get(); 
0

を私はむしろ、ユーザIDによってグループ化するよりも考えて、あなたは、和文でCASEとしてユーザーIDを使用する必要があります。これは本質的にSUM計算の原因であるので、ユーザーIDが(この場合は1)必要なユーザーIDである場合、無視するだけではない場合に値を追加すると言うことができます。

は、あなたが上記にユーザーIDの値をparameterzeしたい場合があり、この

$total_loadup = $this->loadupPayment->select(db::raw('SUM(CASE WHEN user_id = 1 THEN amount ELSE 0 END) as total_loadup'))->get(); 

のようなものを試してみてください。

希望すると便利です。

関連する問題