Php 如何在laravel 5的select方法中添加子查询
代码示例如下所示:Php 如何在laravel 5的select方法中添加子查询,php,laravel-5.2,Php,Laravel 5.2,代码示例如下所示: DB::table('orders')->select([ DB::raw('SELECT COUNT(id) AS order_count WHERE type = 2'), DB::raw('SELECT SUM(id) AS order_sum WHERE type = 2') ])->paginate(20); 所选字段是统计字段,子查询包含多个条件。我这样键入代码,但代码无法工作,并且出现语法错误,然后我无法找出错误所在。谁能帮助我?谢
DB::table('orders')->select([
DB::raw('SELECT COUNT(id) AS order_count WHERE type = 2'),
DB::raw('SELECT SUM(id) AS order_sum WHERE type = 2')
])->paginate(20);
所选字段是统计字段,子查询包含多个条件。我这样键入代码,但代码无法工作,并且出现语法错误,然后我无法找出错误所在。谁能帮助我?谢谢 应该是这样吗
DB::table('orders')->select(
DB::raw('COUNT(id) AS order_count'),
DB::raw('SUM(id) AS order_sum')
)->where(type, 2)
->paginate(20);
我最初的SQL是这样的:
SELECT
o1.store_id,
(SELECT Count(id) FROM `order` WHERE type = 2 AND `order`.store_id = o1.store_id) AS package_order_count,
(SELECT SUM(price) FROM `order` WHERE type = 2 AND `order`.store_id = o1.store_id) AS package_order_sum,
(SELECT Count(id) FROM `order` WHERE type = 3 AND `order`.store_id = o1.store_id) AS member_order_count,
(SELECT SUM(price) FROM `order` WHERE type = 3 AND `order`.store_id = o1.store_id) AS member_order_sum
FROM
`order` as o1
WHERE
`o1`.store_id > 0 AND `o1`.`from` = 1
GROUP BY `o1`.store_id
DB::table('orders')->select([
DB::raw('SELECT COUNT(id) AS order_count WHERE type = 2'),
DB::raw('SELECT SUM(id) AS order_sum WHERE type = 2')
DB::raw('SELECT COUNT(id) AS member_order_count WHERE type = 3'),
DB::raw('SELECT SUM(id) AS member_order_sum WHERE type = 3')
])->paginate(20);
我的php代码是这样的:
SELECT
o1.store_id,
(SELECT Count(id) FROM `order` WHERE type = 2 AND `order`.store_id = o1.store_id) AS package_order_count,
(SELECT SUM(price) FROM `order` WHERE type = 2 AND `order`.store_id = o1.store_id) AS package_order_sum,
(SELECT Count(id) FROM `order` WHERE type = 3 AND `order`.store_id = o1.store_id) AS member_order_count,
(SELECT SUM(price) FROM `order` WHERE type = 3 AND `order`.store_id = o1.store_id) AS member_order_sum
FROM
`order` as o1
WHERE
`o1`.store_id > 0 AND `o1`.`from` = 1
GROUP BY `o1`.store_id
DB::table('orders')->select([
DB::raw('SELECT COUNT(id) AS order_count WHERE type = 2'),
DB::raw('SELECT SUM(id) AS order_sum WHERE type = 2')
DB::raw('SELECT COUNT(id) AS member_order_count WHERE type = 3'),
DB::raw('SELECT SUM(id) AS member_order_sum WHERE type = 3')
])->paginate(20);
因此,我的代码出现了一个错误。您可以通过删除select方法中的
[]
来检查它。这是您的完整数据库查询吗?和count
和SUM
将仅作为订单
表格?请查看我的答案,谢谢!