Off course, without a GROUP BY there should not be a HAVING though the
functionality still stands and a WHERE could be used in stead. MySQL just
accepts it.
Op donderdag 13 november 2014 14:32:31 UTC+1 schreef jan javinto:
>
> Hi,
>
> With Rails 4.1.7 I want to build a generic query calculating the minimum
> of a 'position' field. The 'group by' of this query is dynamic. There may
> be one or not, like so:
>
> grouping=[]
> Item.group(grouping).having("minimum_position>1").minimum(:position).each
> do |item, min_pos|
> ....
> end
>
> I found out that if there is a grouping
> Item.group(:parent).having("minimum_position>1").minimum(:position) will
> generate:
>
> SELECT *MIN(`items`.`position`) AS minimum_position*, parent_type AS
> parent_type, parent_id AS parent_id, position AS position FROM `items`
> GROUP BY parent_type, parent_id, position HAVING minimum_position>1
>
> And if there is no grouping:
> Item.having("minimum_position>1").minimum(:position) will generate:
>
> SELECT *MIN(`items`.`position`) AS minimum_id* FROM `items` HAVING
> minimum_position>1
>
> which leads to an exception error as there is no field 'minimum_position'
>
>
> Why do these two queries do not generate the same column name for the
> Minimum(:field) function?
>
> Would it not be more Rails like to generate the same column name? Would it
> be worth proposing it as an issue?
>
>
> Thanks
>
>
> Jan
>
>
--
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.