hello list, i am programming a function to sort articles by the number of comments they had today but i keep having sql errors i want to use something like (doesnt work actually) @articles = Articles.find(:all, :include => ''comments'', :conditions => ['' comments.created_at >'', Time.now - 86400], :order => ''COUNT(comments.id) '') it is in :order i dont really know what to put in i can do it in about 2 lines without the :order and then with a sort! but i want now to paginate so i need to wrap it all in 1 sql query. ?? thanks -- Heri R. http://sprinj.com --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
This one was a brainbuster. Seriously. I''m lucky it''s the end
of the
work day because I''m done.
This is a beast of a query, and with the 200,000 row child table I
tested it on, it took a while.
select *
from articles
inner join comments on articles.id = comments.article_id
group by articles.id
order by count(*) DESC;
BAM.
Heri R> wrote:> hello list,
>
> i am programming a function to sort articles by the number of comments
> they had today but i keep having sql errors
> i want to use something like (doesnt work actually)
>
> @articles = Articles.find(:all, :include =>
''comments'', :conditions =>
> ['' comments.created_at >'', Time.now - 86400], :order
=>
> ''COUNT(comments.id <http://comments.id>) '')
>
> it is in :order i dont really know what to put in
>
> i can do it in about 2 lines without the :order and then with a sort!
> but i want now to paginate so i need to wrap it all in 1 sql query.
> ??
>
> thanks
>
> --
> Heri R.
> http://sprinj.com
> >
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk
-~----------~----~----~----~------~----~------~--~---
Matthew Isleb
2006-Oct-25 23:14 UTC
Re: Sort and Paginate articles by # number of comments
Jason Norris wrote:> This one was a brainbuster. Seriously. I''m lucky it''s the end of the > work day because I''m done. > This is a beast of a query, and with the 200,000 row child table I > tested it on, it took a while. > > select * > from articles > inner join comments on articles.id = comments.article_id > group by articles.id > order by count(*) DESC; > > BAM.I''m sure the biggest bottleneck here is the 200,000 record resultset. ActiveRecord will choke on this large of a resultset. The query itself probably runs pretty fast. I actually had to give up on using ActiveRecord (and eventually Ruby altogether) for a project because of this. I bet if you include a LIMIT/OFFSET (pagination) in there it''ll run a lot faster. -matthew -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
thanks jason, but doesnt seem to work, i get a "#HY000 Invalid use of group
function" error
Article.find_by_sql(select articles.*, count(comments.id)
inner join comments on articles.id = comments.article_id
group by articles.id WHERE comments.created_at > ...yesterdaysDate...
order by 2 DESC)
works though (instead of order by count(*)
--
Heri R.
http://sprinj.com
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk
-~----------~----~----~----~------~----~------~--~---