rails:1699
From: Takashi Hoshizawa <t_hoshizawa@m...>
Date: Tue, 10 Oct 2006 06:26:10 +0900
Subject: [rails:1699] Re: 親テーブルのカラムで、group by -> count -> order by したい
星澤です。 Edge Railsという開発バージョンが公開されているんですね。 ありがとうございました。トライしてみます。 Kazuhiro Yoshida <moriq@m...> wrote: > moriqです。 > > Takashi Hoshizawa wrote: > > ActiveRecordの使い方について、質問させて下さい。 > > > > class User < ActiveRecord::Base > > has_many :comment > > end > > > > class Comment < ActiveRecord::Base > > belongs_to :user > > end > > > > のようなクラスがある場合に、 > > > > ・user別にcommenntの件数をカウントする > > ・userのname順でリスト表示 > > (ただしcommentがないuserは表示しない) > > > > をしたい時、どう書くのがActiveRecord流でしょうか? > > edgeだと > assert_equal [ > [users(:devid),1], > [users(:tom),2], > [users(:wilma),1] > ], Comment.count(:group => :user, :order => 'users.name', :include > => :user) > こう書けます。 > > 対応する log は > Comment Columns (0.000000) SHOW FIELDS FROM comments > SQL (0.000000) SELECT count(DISTINCT comments.id) AS count_all, user_id > AS user_id FROM comments LEFT OUTER JOIN users ON users.id = > comments.user_id GROUP BY user_id ORDER BY users.name > User Load (0.000000) SELECT * FROM users WHERE (users.id IN (2,1,3)) > こうなります。 > > 現行のactiverecord-1.14.4だと > countで:includeを指定すると:groupが効かないようです。 > > -- > ML: rails@r... > 使い方: http://QuickML.com/ -- ML: rails@r... 使い方: http://QuickML.com/
1697 2006-10-09 04:34 [t_hoshizawa@m... ] 親テーブルのカラムで、group by -> count -> order by したい 1698 2006-10-09 07:16 ┗[moriq@m... ] -> 1699 2006-10-09 23:26 ┗[t_hoshizawa@m... ]