Larabelでサーバを構築しています。
TableAとTableBがあり、★評価の数値をTablesBで管理していてTableAにはUser情報が入っています。
TableAにUser1が存在していた場合にTableBには評価が存在しない場合もあり、複数存在する場合もあります。
複数存在する場合は平均値を求めてGetしたいです。
TablesBにはdataで1から5の数値で入っているので、1と5なら平均の3をユーザ毎に出力したい場合のクエリの書き方をご教授ください。
Controllerでデータベースのクエリを以下のように記載していますが、エラーとなります。
どのように記載すべきかご意見をお願いします。
php
1DB::connection()->enableQueryLog(); 2$s_word = $request->input('s_word'); 3$result = DB::table('table_a') 4 ->leftjoin('table_b', function ($join) { 5 $join->on('table_a.userid', '=', 'table_b.userid') 6 ->avg('data'); 7 }); 8$result = $result ->get();
php
1 "message": "SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to you 2r MySQL server version for the right syntax to use near 'on `table_a`.`userid` = ?' at line 1 (SQL: select avg(`data`) as aggregate on `table_a`.` 3userid` = table_b.userid)",
●table_a:ユーザテーブル
userID | Name |
---|---|
1 | userA |
2 | userB |
●table_b:評価テーブル
userID | Data |
---|---|
1 | 1 |
1 | 5 |
●期待するクエリ回答
1,userA,3
2,userB,null
回答1件
あなたの回答
tips
プレビュー