2016-08-11 17 views
2

在此銷售表中,我創建了2個查詢。如何使用Laravel查詢構建器合併來自同一表的兩個查詢

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

這裏是我的銷售表

actual sales table

回答

2

我覺得你在原始SQL要找的是這樣的:

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`; 

不幸的是你不能做這個最有QueryBuilder的,所以你需要用DB::raw()做到這一點,像這個:

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

因爲他們除了整數兩個相同的,你可以簡單地這樣做:

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

...,讓查詢的其餘部分保持不變。

+0

感謝您的答覆...但我預期的結果是,對於每一日期......這裏只有1行......我希望有BRANCH1和金額分支2量.. – cabs

+0

啊,你必須使用連接和原始查詢。 –

+0

是的......我想是這樣......我不知道該怎麼做...... – cabs

0

試試這個。 ('Sale') - > whereIn('branch_id',[1,'2]) - > get();

+0

每一天..分支1將有500個銷售額,分支2將有400個銷售額...我想在我的預期結果中得到一些東西 – cabs

相關問題