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

回答編集履歴

1

追記

2018/10/30 13:19

投稿

katoy
katoy

スコア22328

answer CHANGED
@@ -61,4 +61,26 @@
61
61
 
62
62
  ![イメージ説明](535a22a109532982169826bce7bdca23.png)
63
63
 
64
- ![イメージ説明](6caa2b60c4b9e5d04a52f0b7fc1635ac.png)
64
+ ![イメージ説明](6caa2b60c4b9e5d04a52f0b7fc1635ac.png)
65
+
66
+ 追記:
67
+ joins を使わない方法も考えてみました。
68
+ ```
69
+ User.where(id: UserStatus.where(status: [2,3]).group(:user_id).having("count(*)=2").select(:user_id))
70
+
71
+ SELECT "users".*
72
+ FROM "users"  WHERE "users"."id" IN   
73
+ (
74
+ SELECT "user_statuses"."user_id"   
75
+ FROM "user_statuses"
76
+ WHERE "user_statuses"."status" IN (?,?)
77
+ GROUP BY "user_statuses"."user_id"
78
+ HAVING (count(*)=2)
79
+ )
80
+ ```
81
+ の QL を発行します。
82
+ ![イメージ説明](29f8d491b67ddafa9d9d0a316d0d0397.png)
83
+
84
+ 参考
85
+ slformatter といページをつかうと 長い SQL を整形してくれます。
86
+ [http://www.dpriver.com/pp/sqlformat.htm](http://www.dpriver.com/pp/sqlformat.htm)