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

質問編集履歴

3

追記

2018/10/24 02:50

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -52,7 +52,7 @@
52
52
  をもってる)
53
53
 
54
54
  で status_list = [2,3] を検索キーとしてあたえたときにこの全部をもっているユーザを探して
55
- この場合 ユーザ1 とユーザ2
55
+ この場合 ユーザ1 とユーザ2 (ユーザ3 はステータス 2 をもってないので除外)
56
56
  を id ではなく [<User1> <User2>] のような users のリレーションとして出力したいです
57
57
  (このあと Users に対しても where でしぼりこみをかけるため)
58
58
  ```

2

追記

2018/10/24 02:50

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -58,4 +58,6 @@
58
58
  ```
59
59
  users.where("id IN (SELECT user_id FROM user_statuses WHERE status_id IN #{status_list})")
60
60
  ```
61
- のようにかけば動きそうな気がするのですが user_statuses をインデックスのついてない status_id で検索してることになって遅くならなりそうなので、user_statuses の検索は foreign key? (意味がよくわかってないですが)のついてるuser_id をキーに検索をかけたいです
61
+ のようにかけば動きそうな気がするのですが user_statuses をインデックスのついてない status_id で検索してることになって遅くならなりそうなので、user_statuses の検索は foreign key? (意味がよくわかってないですが)のついてるuser_id をキーに検索をかけたいです
62
+
63
+ Rails の ActiveRecord メソッドとSQLがまざってしまってますがすいません…

1

追記

2018/10/24 02:48

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -24,4 +24,38 @@
24
24
 
25
25
  みたいな条件で検索したいです
26
26
 
27
- つまり検索中のユーザのIDを他のテーブル検索の条件につかいたいんですがこういうことってできるのでしょうか
27
+ つまり検索中のユーザのIDを他のテーブル検索の条件につかいたいんですがこういうことってできるのでしょうか
28
+
29
+
30
+ サンプル:
31
+
32
+ [users table]
33
+ 1
34
+ 2
35
+ 3
36
+
37
+ [user_statuses table]
38
+ user_id status_id
39
+ 1 1
40
+ 1 2
41
+ 1 3
42
+ 2 2
43
+ 2 3
44
+ 2 4
45
+ 3 3
46
+ 3 4
47
+ 3 5
48
+
49
+ (ユーザ1 はステータス 1,2,3
50
+ ユーザ2 はステータス 2,3,4
51
+ ユーザ3 はステータス 3,4,5
52
+ をもってる)
53
+
54
+ で status_list = [2,3] を検索キーとしてあたえたときにこの全部をもっているユーザを探して
55
+ この場合 ユーザ1 とユーザ2
56
+ を id ではなく [<User1> <User2>] のような users のリレーションとして出力したいです
57
+ (このあと Users に対しても where でしぼりこみをかけるため)
58
+ ```
59
+ users.where("id IN (SELECT user_id FROM user_statuses WHERE status_id IN #{status_list})")
60
+ ```
61
+ のようにかけば動きそうな気がするのですが user_statuses をインデックスのついてない status_id で検索してることになって遅くならなりそうなので、user_statuses の検索は foreign key? (意味がよくわかってないですが)のついてるuser_id をキーに検索をかけたいです