On Feb 7, 12:42 pm, Fernando Perez <[email protected]>
wrote:
> > User.find :all, :joins => "INNER JOIN items ON items.user_id =
> > users.id", :select => "users.*, count(items.id) items_count", :group
> > => "items.user_id HAVING items_count > 5"
>
>  Try:
>
> User.find :all,
> :joins => "INNER JOIN items ON items.user_id = users.id",
> :select => "users.*, count(*) items_count",
> :group => "items.user_id HAVING items_count > 5"
>
> But it might fail, because I think PostgreSQL expects you to list all
> selected fields in the :group option. First try selecting the user.name
> only and add it to the :group option.

Yes... unfortunately count(items.id) is not a problem.

I tried selecting only one field from users and of course it works.
But most of the time I want to select more than one  field.

The "hackery" workaround is to get all the columns:
columns = User.column_names.map { |n| "users.#{n}" }.join(",")

and insert such string to :group. But... .it's not prettiest
option ;-) And it's additional query....

> --
> Posted viahttp://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 [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to