6
私は投稿のモデルhas_many
のコメントを持っています。すべての投稿はスレッドIDを持ちます(ただし、Threadというモデルはありません)。アクティブレコード:グループでカウント
だから私はこの記事内のスレッドの数をカウントしたい場合、私は
> post.comments.count(:thread, :distinct => true)
SELECT COUNT(DISTINCT "comments"."thread") FROM "comments" WHERE "comments"."post_id" = 3
のようになめらかでくださいそして、これは正常に動作します。しかし、1つのコメントだけでスレッドの数を数えたいのですが?
> post.comments.group(:thread).having('COUNT(*) == 1').count
SELECT COUNT(*) AS count_all, thread AS thread FROM "comments" WHERE "comments"."post_id" = 3 GROUP BY thread HAVING COUNT(*) == 1 ORDER BY id
私はIntegerの代わりにOrderedHashを持っています。そして、私は不要なステップを行う必要があります
> post.comments.group(:thread).having('COUNT(*) == 1').count.count
もっと良い解決策はありますか?
一般的にSQLは「=」同値のために「==」ではない期待しています。あなたの答えはおそらく、いくつかのブランドのSQLでは正しいでしょうが、この変更がなければMySQLでは失敗します。 –
それは正しいです。しかし、私は彼が元の投稿で使っていたフォーマットと一貫しているようにしていました。 – Brad