[前][次][番号順一覧][スレッド一覧]

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...    ]