やりたいこと
サブクエリでschedule_user.attendanceの人数を数えてscheduleテーブルに外部結合をしたい。
環境
$ php --version PHP 7.1.31 (cli) (built: Jul 31 2019 08:44:15) ( ZTS MSVC14 (Visual C++ 2015) x64 ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies $ composer --version Composer version 1.9.0 2019-08-02 20:55:32 $ php artisan --version Laravel Framework 5.8.31 $ MySQL --version Your MySQL connection id is 11 Server version: 5.7.27-log MySQL Community Server (GPL)
生成したいSQL(cmdで試したところ通ります)
MySQL
1select * from `schedules` left JOIN ( 2 select `schedule_id`, count(attendance) as user_count from `schedule_user` where `attendance` = 1) 3as `schedule_user` on `schedules`.`id` = `schedule_user`.`schedule_id`
発生している問題・エラーメッセージ
Laravel
1SQLSTATE[42000]: Syntax error or access violation: 1140 In aggregated query without GROUP BY, 2 expression #1 of SELECT list contains nonaggregated column 'clubs.schedule_user.schedule_id'; 3 this is incompatible with sql_mode=only_full_group_by 4(SQL: select * from `schedules` left join ( 5select `schedule_id`, count(attendance) as user_count from `schedule_user` where `attendance` = 1 6) as `schedule_user` on `schedules`.`id` = `schedule_user`.`schedule_id`)
該当のソースコード
Class
1$count_query = \DB::table('schedule_user') 2 ->select('schedule_id', \DB::raw('count(attendance) as user_count')) 3 ->where('attendance', 1); 4 5 $items = \DB::table('schedules') 6 ->leftJoinSub($count_query, 'schedule_user', function($join) { 7 $join->on('schedules.id', '=', 'schedule_user.schedule_id');}) 8 ->get();
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/07 07:03 編集
2019/09/07 09:54