繁体   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