Mam zapytanie, które przeszukuje dwa oddzielne pola w tej samej tabeli ... szuka lokalizacji, które najprawdopodobniej są konkretnym miastem, ale może też być krajem ... tj. potrzeba dwóch pól.hackowanie szyn, jak wyciągnąć dwa różne zapytania razem
Tabela wygląda następująco:
Country City
Germany Aachen
USA Amarillo
USA Austin
Wynik:
Keyword Sideinfo
Aachen Germany
USA Country
Austin USA
Germany Country
Zasadniczo Zastanawiam się, czy istnieje bardziej zwięzły sposób, aby to zrobić, ponieważ musiałem użyć dwóch oddzielnych zapytań następnie dodaj je razem, sortuj je itp. (co działa poprawnie):
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
Nie mogłem znaleźć żadnych informacji o tym, jak związki za pomocą ActiveRecord ...
To pytanie jest dis cusses sposoby użycia lub fałszywe związki w ActiveRecord: http://stackoverflow.com/questions/6686920/activerecord-query-union –