質問編集履歴

3

追記

2018/10/24 02:50

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -106,7 +106,7 @@
106
106
 
107
107
  で status_list = [2,3] を検索キーとしてあたえたときにこの全部をもっているユーザを探して
108
108
 
109
- この場合 ユーザ1 とユーザ2
109
+ この場合 ユーザ1 とユーザ2 (ユーザ3 はステータス 2 をもってないので除外)
110
110
 
111
111
  を id ではなく [<User1> <User2>] のような users のリレーションとして出力したいです
112
112
 

2

追記

2018/10/24 02:50

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -119,3 +119,7 @@
119
119
  ```
120
120
 
121
121
  のようにかけば動きそうな気がするのですが user_statuses をインデックスのついてない status_id で検索してることになって遅くならなりそうなので、user_statuses の検索は foreign key? (意味がよくわかってないですが)のついてるuser_id をキーに検索をかけたいです
122
+
123
+
124
+
125
+ Rails の ActiveRecord メソッドとSQLがまざってしまってますがすいません…

1

追記

2018/10/24 02:48

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -51,3 +51,71 @@
51
51
 
52
52
 
53
53
  つまり検索中のユーザのIDを他のテーブル検索の条件につかいたいんですがこういうことってできるのでしょうか
54
+
55
+
56
+
57
+
58
+
59
+ サンプル:
60
+
61
+
62
+
63
+ [users table]
64
+
65
+ 1
66
+
67
+ 2
68
+
69
+ 3
70
+
71
+
72
+
73
+ [user_statuses table]
74
+
75
+ user_id status_id
76
+
77
+ 1 1
78
+
79
+ 1 2
80
+
81
+ 1 3
82
+
83
+ 2 2
84
+
85
+ 2 3
86
+
87
+ 2 4
88
+
89
+ 3 3
90
+
91
+ 3 4
92
+
93
+ 3 5
94
+
95
+
96
+
97
+ (ユーザ1 はステータス 1,2,3
98
+
99
+ ユーザ2 はステータス 2,3,4
100
+
101
+ ユーザ3 はステータス 3,4,5
102
+
103
+ をもってる)
104
+
105
+
106
+
107
+ で status_list = [2,3] を検索キーとしてあたえたときにこの全部をもっているユーザを探して
108
+
109
+ この場合 ユーザ1 とユーザ2
110
+
111
+ を id ではなく [<User1> <User2>] のような users のリレーションとして出力したいです
112
+
113
+ (このあと Users に対しても where でしぼりこみをかけるため)
114
+
115
+ ```
116
+
117
+ users.where("id IN (SELECT user_id FROM user_statuses WHERE status_id IN #{status_list})")
118
+
119
+ ```
120
+
121
+ のようにかけば動きそうな気がするのですが user_statuses をインデックスのついてない status_id で検索してることになって遅くならなりそうなので、user_statuses の検索は foreign key? (意味がよくわかってないですが)のついてるuser_id をキーに検索をかけたいです