teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

order条件が漏れていたので追記しました。

2019/10/25 01:30

投稿

r_u
r_u

スコア11

title CHANGED
@@ -1,1 +1,1 @@
1
- 外部結合したテーブルをGROUPしてから関連テーブルのカラムでソートしたい
1
+ 外部結合したテーブルを重複処理してから関連テーブルのカラムでソートしたい
body CHANGED
@@ -43,7 +43,7 @@
43
43
 
44
44
  daily_reports = DailyReport.all
45
45
  #各テーブルを外部結合したものを部署の優先度順に並び替え、uniqで重複を取り除いている。
46
- daily_reports.uniq("daily_reports.id").from(daily_reports.joins("LEFT OUTER JOIN `users` ON `users`.`id` = `daily_reports`.`user_id` LEFT OUTER JOIN `departments_users` ON `departments_users`.`user_id` = `users`.`id` LEFT OUTER JOIN `departments` ON `departments`.`id` = `departments_users`.`department_id`").select("*"))
46
+ daily_reports.uniq("daily_reports.id").from(daily_reports.joins("LEFT OUTER JOIN `users` ON `users`.`id` = `daily_reports`.`user_id` LEFT OUTER JOIN `departments_users` ON `departments_users`.`user_id` = `users`.`id` LEFT OUTER JOIN `departments` ON `departments`.`id` = `departments_users`.`department_id`").order(sanitized_query).select("*")).select("*")
47
47
 
48
48
  #部署名でソート
49
49
  daily_reports = daily_reports.order("departments.name DESC")
@@ -53,7 +53,7 @@
53
53
  ```
54
54
  4行目において以下のエラーメッセージが出力されていました。
55
55
 
56
- Mysql2::Error: Duplicate column name 'id': SELECT DISTINCT * FROM (SELECT * FROM `daily_reports` LEFT OUTER JOIN `users` ON `users`.`id` = `daily_reports`.`user_id` LEFT OUTER JOIN `departments_users` ON `departments_users`.`user_id` = `users`.`id` LEFT OUTER JOIN `departments` ON `departments`.`id` = `departments_users`.`department_id`) subquery
56
+ Mysql2::Error: Duplicate column name 'id': SELECT DISTINCT * FROM (SELECT * FROM `daily_reports` LEFT OUTER JOIN `users` ON `users`.`id` = `daily_reports`.`user_id` LEFT OUTER JOIN `departments_users` ON `departments_users`.`user_id` = `users`.`id` LEFT OUTER JOIN `departments` ON `departments`.`id` = `departments_users`.`department_id`ORDER BY field(departments.id ,26,27,29,25,32,33,28,34,35,36,37,38)) subquery
57
57
  ```
58
58
 
59
- ご教お願い致します。
59
+ ご教お願い致します。