簡體   English   中英

如何使用Laravel查詢構建器合並來自同一表的兩個查詢

[英]How to combine two queries from the same table using Laravel query builder

從該銷售表中,我創建了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()

我想結合兩個查詢...

為達到這個

在此處輸入圖片說明

這是我的銷售表

實際銷售表

由於除了整數外,它們都相同,因此您可以簡單地這樣做:

Sale::whereIn('branch_id', [1, 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中測試過它,所以它可能會稍微有些偏離,但它應該使您接近。

樣品小提琴。

嘗試這個。

DB ::表( '銷售') - >其特征在於,( 'branch_id',[1,'2]) - >得到();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM