2016-08-11 25 views
2

この売上テーブルから、2つのクエリを作成しました。Laravelクエリビルダを使用して同じテーブルの2つのクエリを結合する方法

Sale::where(branch_id', 1)->select('*', DB::raw('SUM(amount) as amount))->groupBy('date')->get() 

Sale::where(branch_id', 2)->select('*', DB::raw('SUM(amount) as amount))->groupBy('date')->get() 

私はこの

enter image description here

を達成するために2つのクエリ...

を組み合わせたいここに私の売上表が

actual sales table

です

Sale::whereIn('branch_id', [1, 2])->... 

を...と、クエリの残りの部分は同じままましょう:

答えて

2

はこれです:

SELECT 
    `date`, 
    SUM(IF(branch_id = 1, amount, 0)) as 'Branch 1', 
    SUM(IF(branch_id = 2, amount, 0)) as 'Branch 2', 
    SUM(amount) as 'Total' 
FROM 
    branches 
WHERE 
    branch_id IN (1,2) 
GROUP BY 
    `date`; 

あなたはDB::raw()でそれを行う必要がありますので、残念ながら、あなたは、querybuilderでのようなものを、このの大半を行うことはできませんこれは:

Sale::whereIn(branch_id', [1,2])-> 
     select('date', 
       DB::raw(" 
        SUM(IF(branch_id = 1, amount, 0)) as 'Branch 1', 
        SUM(IF(branch_id = 2, amount, 0)) as 'Branch 2', 
        SUM(amount) as amount 
        ") 
       )->groupBy('date')->get(); 

これはLaravelでこれをテストしていないため、少しオフになっているかもしれませんが、近いうちに取得する必要があります。

Sample fiddle.

3

彼らは整数を除いて同一の両方ですので、あなたは、単にこれを行うことができます。

+0

ご回答に感謝...しかし、私の期待される成果は、日付ごと...そこだけ1行だ...と私はブランチ2用の支社や金額の量を持つようにしたいということです。.. – cabs

+0

ああ、あなたは結合と生のクエリを使用する必要があります。 –

+0

はい...私はそう思います...私はそれをやる方法がわかりません... – cabs

0

お試しください。

DB :: table( 'Sale') - > whereIn( 'branch_id'、[1、 '2]) - > get();私はあなたが生のSQLに探しているものだと思い

+0

...ブランチ1は500の売上を、支店2は400の売上を...私は予想される結果に何かを得たい – cabs

関連する問題