我有一个查询,该查询在同一张表中搜索两个单独的字段…查找最有可能是特定城市但也可能是国家/地区的位置…即需要两个字段。
表格看起来像:
Country City Germany Aachen USA Amarillo USA Austin
结果:
Keyword Sideinfo Aachen Germany USA Country Austin USA Germany Country
基本上,我想知道是否还有一种更简洁的方法,因为我不得不使用两个单独的查询,然后将它们添加在一起,对其进行排序等(效果很好):
def self.ajax(search) countries = Location.find(:all, :select=> 'country AS keyword, "Country" AS sideinfo', :joins => :hotels, :conditions => [ 'hotels.email IS NOT NULL AND country LIKE ?', "#{search}%" ], :group => :country ) cities = Location.find(:all, :select=> 'city AS keyword, country AS sideinfo', :joins => :hotels, :conditions => [ 'hotels.email IS NOT NULL AND city LIKE ?', "#{search}%" ], :group => :city ) out = cities + countries out = out.sort { |a,b| a.keyword <=> b.keyword } out.first(8) end
我找不到有关如何使用ActiveRecord进行联合的任何信息…
ActiveRecord本身无法进行UNION查询。因此,有两种解决方案: