Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel SQL groupBy和Sum_Php_Mysql_Laravel_Laravel 5 - Fatal编程技术网

Php Laravel SQL groupBy和Sum

Php Laravel SQL groupBy和Sum,php,mysql,laravel,laravel-5,Php,Mysql,Laravel,Laravel 5,这是我的表格关系: **reservations** id, date, etc...<br> **reservation_service_info** service_info_id, reservation_id<br> **services_info** price etc... 结果: [ { "date": "2016-06-01", "price": "345.00" }, { "date": "2016-06-01",

这是我的表格关系:

**reservations** id, date, etc...<br>
**reservation_service_info** service_info_id, reservation_id<br>
**services_info** price etc...
结果:

[
  {
    "date": "2016-06-01",
    "price": "345.00"
  },
  {
    "date": "2016-06-01",
    "price": "90.00"
  },
  {
    "date": "2016-06-01",
    "price": "222.00"
  },
  {
    "date": "2016-06-02",
    "price": "393.00"
  },
  {
    "date": "2016-06-02",
    "price": "142.00"
  }
]
当我在查询中添加
groupBy('date')
时,它会根据dosent SUM(价格)对其进行分组

您应该使用
sum(price)
获得sum:

return $query->selectRaw('DATE(start_time) AS date')
        ->selectRaw("(SELECT SUM(price) FROM `services_info` inner join `reservation_service_info` on `services_info`.`id` = `reservation_service_info`.`service_info_id` where `reservation_service_info`.`reservation_id` = reservations.id) as price")
        ->orderBy('date', 'ASC')
        ->groupBy('date')
        ->get();

我认为您的查询构建方式有点错误。我建议这样想:

return $query->select(\DB::raw('DATE(start_time) AS date'), \DB::raw('SUM(price) as price'))
        ->join('reservation_service_info', 'reservations.id', '=', 'reservation_service_info.reservation_id')
        ->join('services_info', 'services_info.id', '=', 'reservation_service_info.services_info_id')
        ->orderBy('date', 'ASC')
        ->groupBy('date')
        ->get();
如果
$query
表是
reservations

请尝试以下操作:

                 $users=   DB::table('reservation_service_info')
                     ->join('services_info', 'reservation_service_info.service_info_id', '=', 'services_info.id')
                     ->join('reservations', 'reservation_service_info.reservation_id', '=', 'reservations.id')
                     ->select('DATE(reservations.start_time) AS date','SUM(services_info.price) AS price')
                     ->orderBy('reservations.start_time', 'ASC')
                     ->groupBy('reservations.start_time')
                     ->get();

是的,我试过了,但我得到了同样的效果,因为这个选择查询只是选择了一行…@user3806764你能编辑你的问题并显示想要的结果吗?
return $query->select(\DB::raw('DATE(start_time) AS date'), \DB::raw('SUM(price) as price'))
        ->join('reservation_service_info', 'reservations.id', '=', 'reservation_service_info.reservation_id')
        ->join('services_info', 'services_info.id', '=', 'reservation_service_info.services_info_id')
        ->orderBy('date', 'ASC')
        ->groupBy('date')
        ->get();
                 $users=   DB::table('reservation_service_info')
                     ->join('services_info', 'reservation_service_info.service_info_id', '=', 'services_info.id')
                     ->join('reservations', 'reservation_service_info.reservation_id', '=', 'reservations.id')
                     ->select('DATE(reservations.start_time) AS date','SUM(services_info.price) AS price')
                     ->orderBy('reservations.start_time', 'ASC')
                     ->groupBy('reservations.start_time')
                     ->get();