当前位置: 首页 > 面试题库 >

Rails Union hack,如何将两个不同的查询放在一起

白子默
2023-03-14
问题内容

我有一个查询,该查询在同一张表中搜索两个单独的字段…查找最有可能是特定城市但也可能是国家/地区的位置…即需要两个字段。

表格看起来像:

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查询。因此,有两种解决方案:

  • 根据需要使用find_by_sql构建查询。我不建议这样做。
  • 使用类似union的插件来执行UNION sql查询。


 类似资料:
  • 我有dsl查询需要返回 国家所有者是词典列表 地区所有者是词典列表 需要检查id在字典中位置 下面的查询返回,但我需要操作

  • 我有桌子: 行程:Trip_Num、Trip_Type等 用户的出差历史记录:Username、Trip_Num等 我正在用php做一个项目,需要为一个特定的用户(通过他的用户名)做一个SQL查询--需要知道用户的Trips历史表中Trip_Num的Trip_Type。 附上我的表格: 更新:我需要计算trip_type中的每个值。我的意思是我想看到“步行”-4次,“自行车”-3次,这很好?...

  • 我编写了一个查询,用于查找特定班级中某一性别的学生人数,但我无法找到一种方法来编写可以对两种性别执行相同操作的查询。我尝试编写两次查询(针对每个性别),然后使用UNION将它们组合起来,但也无法做到这一点。 查询# 1 结果: 查询#2 结果: 我希望输出如下,最好使用一个查询: 谢谢你。

  • 问题内容: 如何合并这两个SQL语句? 两个表中都存在hits10,hits11和hits12。 问题答案: 使用UNION查询-只需在两个查询之间填入“ UNION”即可: 更新 将联合包装在另一个查询中:

  • 我正在使用MongoDB,我最终得到了两个集合(无意中)。 第一次收集(样本)有1亿条记录(推文),结构如下: 第二个集合(用户)拥有来自tweet集合的3000万条独特用户记录,看起来是这样的 用户集合中的_id是来自推文集合的user.screen_name,目标是他们的状态(是否作弊用户),最后value.count是我们第一个集合(样本)集合中出现的用户数量(例如捕获的推文数量) 现在我想

  • 问题内容: 我有两个查询,如下所示: 我想一次执行两个查询。 但是,然后告诉我如何处理每个单独设置的表。实际上,在ASP.NET中,我们使用数据集来处理两个查询, 如何使用PHP / MYSQL做同样的事情? 问题答案: 更新: 显然可以通过将标志传递给。请参阅使用PHP在一条语句中执行多个SQL查询。尽管如此,任何当前的读者都应避免使用-class函数,而更喜欢PDO。 您无法使用PHP中的常规