質問編集履歴

1

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

2019/10/25 01:30

投稿

r_u
r_u

スコア11

test CHANGED
@@ -1 +1 @@
1
- 外部結合したテーブルをGROUPしてから関連テーブルのカラムでソートしたい
1
+ 外部結合したテーブルを重複処理してから関連テーブルのカラムでソートしたい
test CHANGED
@@ -88,7 +88,7 @@
88
88
 
89
89
  #各テーブルを外部結合したものを部署の優先度順に並び替え、uniqで重複を取り除いている。
90
90
 
91
- 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("*"))
91
+ 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("*")
92
92
 
93
93
 
94
94
 
@@ -108,10 +108,10 @@
108
108
 
109
109
 
110
110
 
111
- 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
111
+ 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
112
112
 
113
113
  ```
114
114
 
115
115
 
116
116
 
117
- ご教お願い致します。
117
+ ご教お願い致します。