SELECT文でGROUP BYを使う時、SELECT句でカラムにAS句の別名をつけるなら、GROUP BY句でも別名を付ける
MySQLを使っていて、LaravelのO/RマッパーでSELECT文を呼び出した際、表題のエラーが出ました。
toSql() でSQL文を取り出し、MySQLの対話環境でUnknown column 'hogehoge' in 'group statement'
とエラーが出てくれたのでわかりました。
これはダメ
select id, name, DATE_FORMAT(date_column, "%Y-%m-%d") AS date, SUM(point) AS amount from employee GROUP BY DATE_FORMAT(date_column, "%Y-%m-%d") ORDER BY DATE_FORMAT(date_column, "%Y-%m-%d");
これでOK
select id, name, DATE_FORMAT(date_column, "%Y-%m-%d") AS date, SUM(point) AS amount from employee GROUP BY date ORDER BY DATE_FORMAT(date_column, "%Y-%m-%d");
GROUP BY 句は別名を付けたらその別名を使わなければいけない。ORDER BY 句は別名でなくても大丈夫。
Laravel の O/R マッパーだと
DB::table('employee')->groupBy('date')->selectRaw('id, name, DATE_FORMAT(date_column, "%Y-%m-%d") AS date, SUM(point) AS amount')->get()