Ich habe eine Abfrage, die zwei separate Felder in der gleichen Tabelle sucht ... auf der Suche nach Orten, die höchstwahrscheinlich eine bestimmte Stadt sind, könnte aber auch ein Land sein ... dh die Notwendigkeit von zwei Feldern.Schienen Union Hack, wie man zwei verschiedene Abfragen zusammen
Tabelle wie folgt aussieht:
Country City
Germany Aachen
USA Amarillo
USA Austin
Ergebnis:
Keyword Sideinfo
Aachen Germany
USA Country
Austin USA
Germany Country
Im Grunde frage ich mich, ob es eine prägnante Art und Weise, dies zu tun, weil ich zwei separate Abfragen zu verwenden, hatte dann fügen Sie sortieren zusammen, sie usw. (was gut funktioniert):
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
ich konnte keine Informationen finden, wie man Unionen, die ActiveRecord verwenden ...
Diese Frage dis cuses Möglichkeiten, Gewerkschaften in ActiveRecord zu verwenden oder zu fälschen: http://stackoverflow.com/questions/6686920/activerecord-query-union –