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 rubyonrails-core+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-core@googlegroups.com.
Visit this group at http://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

Reply via email to