Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mysql2::Error: Column 'created_at' in order clause is ambiguous

I have the following query that is working correctly

ObjectItem.find(:all, :include => :object_groups, :conditions =>  "object_items.description LIKE '%#{search}%' OR object_groups.description LIKE '%#{search}%'", :order => 'object_items.created_at DESC')

But doing query this way is now deprecated so i'm trying to change to this form

ObjectItem.order('object_items.created_at DESC').includes(:object_groups).where("object_items.description LIKE '%#{search}%' OR object_groups.description LIKE '%#{search}%'")

But i'm getting the following error:

Mysql2::Error: Column created_at in order clause is ambiguous: SELECT  DISTINCT `object_items`.id FROM `object_items` LEFT OUTER JOIN `object_groups_object_items` ON `object_groups_object_items`.`object_item_id` = `object_items`.`id` LEFT OUTER JOIN `object_groups` ON `object_groups`.`id` = `object_groups_object_items`.`object_group_id` WHERE (object_items.description LIKE '%%' OR object_groups.description LIKE '%%') ORDER BY object_items.created_at DESC, created_at DESC  LIMIT 20 OFFSET 0
like image 226
Quantum Avatar asked May 02 '11 15:05

Quantum


1 Answers

order('users.created_at DESC')

Basically the problem is that there is join query probably so both the table has the created_at field so its throw the error. if you want to order the result according to which tables created_at so using the table_name.field_name on which you order the result.

like image 136
Mohit singh Avatar answered Sep 22 '22 14:09

Mohit singh