1

私の以前の質問とこの記事に対するこの回答のおかげで、私はこのクエリを言い換える方法を見つけました:

SELECT * FROM participants
GROUP BY conversation_id
HAVING sum(user_id not in (1,3)) = 0

このRailsスタイルのクエリに:

Participant.find(:all, group: "conversation_id HAVING sum(user_id not in (1,3)) = 0")

私はRailsを初めて使用しますが、これは古い構文のようです。最も気になるのは、Rails構文ですべてを実行するのではなく、そこで多くのSQLを使用することです。

上記のクエリをさらに言い換えて、Rails構文でのみ記述されるようにするにはどうすればよいですか?おそらく引用符は必要ありません。これが別のデータベースで実行されることを確認する必要があります。

4

1 に答える 1

1

Rails3の方法は次のようになります。

Participant.group("conversation_id").having("sum(user_id not in (1,3)) = 0")

持つ句の文字列をなくすことはできません。文字列についてのあなたの懸念は何ですか?上記のクエリはかなり移植性が高いはずです。

于 2012-12-09T15:37:33.507 に答える