diff --git a/lib/active_admin/resource_controller/collection.rb b/lib/active_admin/resource_controller/collection.rb
index <HASH>..<HASH> 100644
--- a/lib/active_admin/resource_controller/collection.rb
+++ b/lib/active_admin/resource_controller/collection.rb
@@ -46,9 +46,13 @@ module ActiveAdmin
 
         def sort_order(chain)
           params[:order] ||= active_admin_config.sort_order
-          table_name = active_admin_config.resource_table_name
           if params[:order] && params[:order] =~ /^([\w\_\.]+)_(desc|asc)$/
-            chain.order("#{table_name}.#{$1} #{$2}")
+            column = $1
+            order  = $2
+            table  = active_admin_config.resource_table_name
+            table_column = (column =~ /\./) ? column : "#{table}.#{column}"
+
+            chain.order("#{table_column} #{order}")
           else
             chain # just return the chain
           end
When an :order parameter is given with a dot (.) then it won't append the table name at the beginning of the column name.