Rails 方式编写复杂查询

2024-04-20

我有这样的疑问:

SELECT f.id, 
       Concat(f.name, ' ', REPLACE(f.parent_names, ',', ' ?'))        AS FullName, 
       u.name                                                         AS Unit, 
       u.id                                                           AS UnitId, 
       u.position                                                     AS UnitPosition, 
       city.name                                                      AS City, 
       hus.mobile1                                                    AS HusMobile, 
       wife.mobile1                                                   AS WifeMobile, 
       hus.first_name                                                 AS Spouse1, 
       wife.first_name                                                AS Spouse2, 
       f.phone                                                        AS HomePhone, 
       f.email                                                        AS Email, 
       Date_format(f.contact_initiation_date, '%d/%m/%Y')             AS InitDate, 
       f.contact_initiation_date                                      AS sql_date, 
       Date_format(f.status_change_date, '%d/%m/%Y')            AS StatususChangeDate, 
       stts.name                                                      AS 'Status', 
       (SELECT Group_concat(' ', t.name, '<', t.id, '>' ORDER BY t.position DESC 
               ) 
        FROM   taggings tgs 
               JOIN tags t 
                 ON tgs.tag_id = t.id 
        WHERE  tgs.taggable_type = 'family' 
               AND tgs.taggable_id = (SELECT DISTINCT taggable_id 
                                      FROM   taggings 
                                      WHERE  tag_id IN( 76, 72, 74 ) 
                                             AND taggable_id = f.id)) AS HandlingStatus, 
       Date_format(f.reconnection_date, '%d/%m/%Y')               AS ReconnectionDate, 
       f.reconnection_date                                   AS reconnection_sql_date, 
       Date_format(cmt.created_at, '%d/%m/%Y')                        AS CommentDate, 
       cmt.comment                                                    AS LastComment, 
       usr.name                                                       AS Comentator, 
       Format(e.income_total, 0)                                      AS Income, 
       Format(e.expense_total, 0)                                     AS Expense, 
       Format(e.debts_total, 0)                                       AS Debts 
FROM   families f 
       JOIN categories stts 
         ON f.family_status_cat_id = stts.id 
       JOIN units u 
         ON f.unit_id = u.id 
       JOIN categories city 
         ON f.main_city_cat_id = city.id 
       LEFT JOIN comments cmt 
              ON f.last_comment_id = cmt.id 
       LEFT JOIN contacts hus 
              ON hus.id = f.husband_id 
       LEFT JOIN contacts wife 
              ON wife.id = f.wife_id 
       LEFT JOIN users usr 
              ON usr.id = cmt.user_id 
       LEFT JOIN escort_requests e 
              ON e.family_id = f.id 
WHERE  ( 1 = 0 
          OR ( u.is_busy = 0 
               AND f.family_status_cat_id = 1421 ) 
          OR ( u.is_busy = 1 
               AND f.family_status_cat_id = 1421 ) 
          OR ( f.family_status_cat_id = 1423 ) 
          OR ( f.family_status_cat_id = 1424 ) ) 
HAVING ( 1 = 1 
         AND handlingstatus IS NOT NULL 
         AND fullname LIKE '%%' ) 
ORDER  BY fullname 
LIMIT  0, 100 

我如何在 Rails 中编写它?现在我用字符串构建一个数组,但是有没有一种 Rails 方法可以做得更好?如果没有更好的办法,就提出来吧。

WHERE tag_id IN( 76, 72, 74 ) 行中的值是动态创建的。


我一直在尝试将一些复杂的 SQL 与 Rails 集成,但没有找到比直接运行 SQL 更好的方法。任何偏离非常简单查询的内容都可能很难在 activerecord 中编码(和理解)。

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

Rails 方式编写复杂查询 的相关文章

  • Rails ActiveRecord 按日期将结果分组到子集合中

    我正在尝试在 Rails 3 1 中执行 ActiveRecord 查询 其中我将结果排序到分组项目的子集合中 在本例中按日期分组 我认为我的代码可以最好地解释它 这是我的方法 它有效 但发出 4 个查询才能完成工作 这样做似乎效率不太高
  • 如何在rails中使用like子句查询?

    我想在搜索关键字时获得 json 格式的数据 所以我使用 LIKE 子句并像这样查询 select from employees where fname like or mname like or lname like or usernam
  • Rails 从哈希数组中选择最大值

    我有一个像这样的哈希数组 我想取其中的最大值 data name abc value 10 0 name def value 15 0 name ghi value 20 0 name jkl value 50 0 name mno val
  • 使 diff-lcs 的输出可读

    我正在使用 diff lcs gem 输出两个 html 内容体之间的差异 这是示例内容 版本一 p Paragraph one Sentence one p p Paragraph two Another sentence p p Par
  • 运行“bundle install”失败并要求我运行“bundle install”

    事实上 当从我从 git 存储库克隆的现有 Rails 应用程序内部运行时 所有与 gem 相关的命令都会导致相同的错误消息 bundle install Could not find tzinfo 0 3 27 in any of the
  • 当我运行 rake:db migrate 命令时,出现错误“未初始化常量 CreateArticles”

    我创建了一个模型 ruby 脚本 生成模型文章 简单就够了 这是迁移文件create articles rb def self up create table articles do t t column user id integer t
  • Rails cron 每当捆绑:命令未找到

    我尝试使用 每当 每天执行一次耙子任务 我收到这个错误 bin bash bundle command not found home app rvm rubies ruby 1 9 2 p180 lib ruby site ruby 1 9
  • ruby 无法复制 Fixnum

    我有一些这样的代码 ssh files id rsa pub id rsa ssh files each with index do item index ssh files index generate ssh path creator
  • 使用 gem 添加辅助方法

    我找到了很多有关添加表单辅助方法的信息 请参阅我的其他问题之一 但我找不到有关添加辅助方法的任何信息 就好像它们是在application helper rb 我尝试过复制application helper rb从 Rails 应用程序到
  • 配置 session_store.rb 来处理登台和生产?

    我的 Rails 3 1rc6 应用程序上有一个使用子域的暂存和生产环境 我为这些环境购买并配置了不同的域名 因为默认的 some something herokuapp com 不能很好地与子域配合 当我将 session store r
  • RSpec:重新打开类时存根 Rails.application.config 值不起作用?

    我在应用程序配置中定义了一个选项 我想要测试的类是在 gem 中定义的 不是我编写的 我想重新开课 Myclass class eval do if Rails application config myoption value1 some
  • jruby-openssl 中已初始化常量

    当在 Torquebox 上运行我的 Rails 应用程序时 我得到了很多 already initialized constant 警告源自gems jruby openssl 0 8 2 lib shared jruby openssl
  • 覆盖生产环境中的后端资产

    我正在开发一个需要稍微改变 Refinery 的 WYMEditor 行为的项目 这可以通过重写轻松完成jquery refinery wymeditor js using rake refinery override并根据我自己的需要进行
  • Rails 3 > 在 rake 任务中渲染视图

    我遇到了一项需要为 Mailchimp 准备新闻通讯的 rake 任务 使用 google 搜索到的 Rails 2 x 内容 我现在有了以下代码 desc Sends newsletter to Mailchimp list task s
  • 将 mongoid 会话设置为只读

    我有不同的会话mongoid yml 其中一个会话提供来自静态 mongo 数据库的数据 我想知道是否有可能以只读模式 加载 会话 以便不进行任何更改save create destroy or destroy all可以制作 我的mong
  • 是否仍然可以在 Rails 4 中使用测试单元?

    从 Rails 3 2 升级到 Rails 4 后 我的应用程序可以运行 但我用测试单元编写的测试是一场灾难 据传 Minitest 与测试单元 兼容 然而 如果我尝试使用 现在捆绑的 Minitest 就会发现有很多差异 从断言 语句名称
  • 我可以使用 ActiveRecord 与 Hstore 中的字段的关系吗?

    我可以使用 hstore 哈希中的字段通过活动记录 own to 将一个模型与另一个模型绑定吗 我将详细说明 我有一个用户模型 它根据权限通过 STI 在其字段之一上子类化为许多不同的其他用户模型 class User lt ActiveR
  • Twitter Bootstrap Modal 无法在 Rails 中工作

    我还很新Rails and to twitter bootstrap 我正在研究模态 但我收到了 NoMethodError 未定义的方法 渲染 当我删除 代码来自my release js erb页面 它消失但没有窗口出现 另外 还有错误
  • 通过sprocket动态渲染sass文件

    我想从助手那里渲染一些变量 scss erb模板使用了image url 萨斯函数 template scss erb background image image url 到目前为止 ERB 部分很简单 利用这个堆栈溢出答案 https
  • 为什么这段 Ruby 代码无法写入日志文件?

    一旦脚本被守护 记录器就无法再写入文件 那么我应该如何以及何时初始化日志呢 require rubygems require daemons require logging def create new logger logger Logg

随机推荐