Php 如何在条件下将计数(*)作为总计
我使用的是Laravel 5.5,我想在一个条件下执行SQL查询Php 如何在条件下将计数(*)作为总计,php,mysql,sql,laravel,laravel-5.5,Php,Mysql,Sql,Laravel,Laravel 5.5,我使用的是Laravel 5.5,我想在一个条件下执行SQL查询count(*)as total——如果http_响应等于0,那么它应该将总值设置为0,而不是像当前那样设置为1 http_response created_at session_id website_id 404 2018-03-03 17:20:18 2018-03-03 17:15:40-BaC-2 2 404 2018
count(*)as total
——如果http_响应等于0,那么它应该将总值设置为0,而不是像当前那样设置为1
http_response created_at session_id website_id
404 2018-03-03 17:20:18 2018-03-03 17:15:40-BaC-2 2
404 2018-03-03 17:20:18 2018-03-03 17:15:40-BaC-2 2
404 2018-03-03 17:20:18 2018-03-03 17:15:40-BaC-2 2
0 2018-02-27 14:21:14 2018-02-27 14:19:32-T6f-2 2
404 2018-02-28 14:21:14 2018-02-28 14:19:32-T6f-2 2
我的Laravel查询的外观(如果真的需要,我可以尝试获取此查询的原始SQL查询):
我得到的结果是:
03/03/2018 : 3
27/02/2018 : 1
28/02/2018 : 1
预期结果:
03/03/2018 : 3
27/02/2018 : 0
28/02/2018 : 1
当
brokenlink::withTrashed()
...
->select('created_at', DB::raw('CASE WHEN http_response =0 THEN 0 ELSE count(*) END as total'))
->groupBy('session_id')
->get();
我不知道Laravel,但您需要有效地将您的
计数(*)
更改为类似计数的内容(当http\u response=0时,则为NULL,否则为1结束)
。或者,您可以使用一个SUM
来代替:SUM(当http\u response=0时,则为0,否则为1结束)
。
brokenlink::withTrashed()
...
->select('created_at', DB::raw('CASE WHEN http_response =0 THEN 0 ELSE count(*) END as total'))
->groupBy('session_id')
->get();