如何在 Rails 中使用 GROUP_CONCAT?

2023-11-25

我有以下查询,我想将其与 ActiveRecord 一起使用,以便可以将其转换为生产服务器上基于本机 ORACLE 的查询。现在我正在使用 SQLITe。

select c.name,co.code,GROUP_CONCAT(c.name) AS GroupedName
from countries c
INNER JOIN continents co
on c.continent_code = co.code
INNER JOIN event_locations el
on el.location_id = c.id
group by co.code

据我所知,没有group_concatRails 中的等效项,但您可以使用includes要做到这一点:

continents = Continents
  .joins(:countries, :event_locations)
  .includes(:countries)
  .group("continents.code")

continents.each do |continent| 
  continent.countries.join(",")
end

这只会产生 2 个查询 - 我知道,这不如一个查询那么好,但我认为这比 Rails 在没有“group_concat”的情况下能做的最好。另一种方式是这样的:

Country
  .select("countries.id, GROUP_CONCAT(countries.name) as grouped_name")
  .joins(:continents, :event_locations)
  .group("continents.code")

但如果您这样做,则需要根据您的数据库供应商进行更改。

  • MySQL: group_concat(国家.名称)
  • PostgreSQL: string_agg(国家.名称, ',')
  • Oracle: listagg(国家.名称, ',')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Rails 中使用 GROUP_CONCAT? 的相关文章

随机推荐

  • 在 SPARK SCALA 中按名称获取行类型结构的元素

    在 Apache Spark 中的 DataFrame 对象中 我使用的是 Scala 接口 如果我迭代其 Row 对象 是否有任何方法可以按名称提取结构值 我使用下面的代码按名称提取 但我面临如何读取结构值的问题 如果值是字符串类型 那么
  • 如何在android中的同一布局中设置多个gridview?

    我想为相同的布局设置两个网格视图 我还可以在相同的布局中设置它 但由于可滚动控件 它看起来像 wrap content but i want to show full grid view in a screen one after anot
  • 返回元素的完整路径?

    我正在寻找一种方法来查找单击时元素的完整路径 例如 假设我有以下 HTML 代码 div ul li item 1 li li item 2 li ul div div ul li item 1 li li item 2 li ul div
  • Maven project.build.testSourceDirectory 属性在配置文件中不起作用

    我想对 Maven 项目中的不同文件夹进行测试 并且我需要更改 Maven 的project build testSourceDirectory财产 我正在使用 Maven 配置文件来解决这个问题 我的个人资料如下所示
  • 从 UIWebView 检测 window.open()

    简短的问题 是否可以检测到window open in a UIWebView使用UIWebViewDelegate或者还有其他方法可以达到这个目的吗 我需要 url 时window open 触发事件以显示UIAlertView 你需要覆
  • fluidd 丢失了毫秒,现在日志消息在 elasticsearch 中存储无序

    我正在使用 fluidd 将日志消息集中在 elasticsearch 中并使用 kibana 查看它们 当我查看日志消息时 同一秒内发生的消息是无序的 并且 timestamp 中的毫秒数全为零 2015 01 13T11 54 01 0
  • TensorFlow - 参数无效:Reshape:0 既被馈送又被提取

    有没有办法在 Tensorflow 中同时提供和获取同一变量 如果不是 为什么不允许这样做 我收到此错误 StatusNotOK Invalid argument Reshape 0 is both fed and fetched 你不能拥
  • Bootstrap 中 nav 与 div.navbar 的区别

    Bootstrap的一些例子 use div navbar保持导航栏 以及其他示例 例如 在组件文档页面 use nav navbar 这两种方法有什么区别 是否有使用其中一种而不是另一种的指南 两者都会输出相同的设计 但使用nav标签在方
  • CGAffine变换并缩放到图像中心

    我开始使用 Objective C 学习适合绝对初学者的 iPhone 和 iPad 应用程序 作者 Rory Lewis书 但我被困在第五章了 我想做一个缩小图像的按钮 我的问题是 在我编写完所有代码后 图像缩小到 UIImageView
  • 是否有任何跨浏览器 JavaScript 可以使 vh 和 vw 单位工作

    注意 好的 当我输入这个问题时 我遇到了this建议使用的问题 media query但又被问到 2011年 如你所知 CSS3 引入了新的视口百分比长度单位 vh and vw 我觉得这对于可靠的响应式布局非常有用 所以我的问题是 是否有
  • 如何隐藏 JScrollBar 中的箭头按钮

    我需要隐藏箭头按钮java awt Scrollbar VERTICAL 在 AWT 应用程序中 有谁知道如何实现这一点 我看到一个例子here 但代码只是隐藏了按钮 按钮的空白空间仍然存在 它没有被滚动条占据 更准确地说 这是我应该实现的
  • 从 Windows 窗体打开 URL

    我正在尝试从 Windows 窗体提供指向我公司网站的链接 我希望表现良好并使用用户首选的浏览器启动 从 Windows 窗体应用程序在用户的默认浏览器中打开 URL 的最佳方法是什么 ProcessStartInfo sInfo new
  • 将 jar 添加到类路径、Eclipse、Android

    目前 我转到属性 gt 构建路径 gt 库 gt 然后将外部jar添加到我的类路径中 我知道这是正确的方法 至少对于java来说是这样 然而 问题是我在 Android SDK 2 1 上运行它 当我运行该程序时 我认为 android 模
  • 如何管理 Visual Studio Team Services (TFS) 的需求(规范)?

    我正在使用本地 TFS 并计划迁移到 Visual Studio Team Services 但我仍然有一个问题 如何在 VSTS 或 TFS 中正确管理 存储 编辑 跟踪 软件项目的需求 规范 最好的解决方案是什么 你用什么 现在我们使用
  • gcp - 在数据库插入时触发云功能?

    不知道如何搜索这个 我正在寻找一种在 Cloud SQL 中的数据库中插入新行时触发 Cloud Function 的方法 搜索 google云功能事件 或 触发器 会出现Firebase结果 这不是我想要的 有一系列的云功能可以接收数据并
  • Gson不解析类变量

    我正在使用 Gson 并且我有一个对象 它的字段之一是类 class A private Class aClass 当我使用默认的 Gson 对象将实例解析为 Json 时 aClass 为空 知道为什么吗 您需要自定义类型适配器 这是示例
  • 点击空白处的事件如何处理?

    我想在列表视图左键单击空白区域时捕获事件 即单击列表视图控件中的任何项目 我在列表视图的事件列表中进行搜索 但没有找到 我怎样才能做到这一点 请帮忙 编辑 如果我能捕获此事件 我想要做什么 取消选择列表视图中的所有项目 如果将处理程序附加到
  • 在 div 内将 2 个跨度一个左对齐,另一个右对齐

    有人可以编写 CSS 片段来做到这一点吗 div class container span class left Left span span class right Right span div 这是CSS container conta
  • django 模板中的模/模等效运算符/函数?

    我正在学习 django 的模板系统并尝试做一些相对琐碎的事情 h2 State h2 ul class states for state in states li class state elements a href state nam
  • 如何在 Rails 中使用 GROUP_CONCAT?

    我有以下查询 我想将其与 ActiveRecord 一起使用 以便可以将其转换为生产服务器上基于本机 ORACLE 的查询 现在我正在使用 SQLITe select c name co code GROUP CONCAT c name A