回答編集履歴

1

追記

2018/10/30 13:19

投稿

katoy
katoy

スコア22324

test CHANGED
@@ -125,3 +125,47 @@
125
125
 
126
126
 
127
127
  ![イメージ説明](6caa2b60c4b9e5d04a52f0b7fc1635ac.png)
128
+
129
+
130
+
131
+ 追記:
132
+
133
+ joins を使わない方法も考えてみました。
134
+
135
+ ```
136
+
137
+ User.where(id: UserStatus.where(status: [2,3]).group(:user_id).having("count(*)=2").select(:user_id))
138
+
139
+
140
+
141
+ SELECT "users".*
142
+
143
+ FROM "users"  WHERE "users"."id" IN   
144
+
145
+ (
146
+
147
+ SELECT "user_statuses"."user_id"   
148
+
149
+ FROM "user_statuses"
150
+
151
+ WHERE "user_statuses"."status" IN (?,?)
152
+
153
+ GROUP BY "user_statuses"."user_id"
154
+
155
+ HAVING (count(*)=2)
156
+
157
+ )
158
+
159
+ ```
160
+
161
+ の QL を発行します。
162
+
163
+ ![イメージ説明](29f8d491b67ddafa9d9d0a316d0d0397.png)
164
+
165
+
166
+
167
+ 参考
168
+
169
+ slformatter といページをつかうと 長い SQL を整形してくれます。
170
+
171
+ [http://www.dpriver.com/pp/sqlformat.htm](http://www.dpriver.com/pp/sqlformat.htm)