sql - 将一些 SQL 查询转换为事件记录

标签 sql ruby-on-rails ruby activerecord

所以,我有这个“高级”查询(实际上不多),我想将其转换为 Ruby Active Record 的语法。

SELECT microposts.* 
FROM microposts
WHERE user_id IN 
      ( SELECT r.followed_id as uid 
        FROM relationships r 
        WHERE follower_id = 1 
      UNION 
        SELECT u.id as uid 
        FROM users as u 
        WHERE id = 1
      ) 
ORDER BY microposts.created_at DESC

这个想法是检索用户 1 的所有微帖子,并且用户 1 按照创建顺序关注用户,但我真的不知道如何使用 Active Record 的语法轻松翻译它。

有什么想法吗?

PS:正如这里所问的是一些 Rails 上下文:

我有 3 个模型:微博用户关系

  • Relationships 是一个处理所有用户关系(关注者/被关注者)的连接表。
  • 用户通过关系拥有许多 follow_users/follower。
  • 用户有多个 microhoop,而 microhoop 有一个用户。

谢谢。

最佳答案

不了解 Ruby,但 SQL 可以简化为:

SELECT microposts.* 
FROM microposts
WHERE user_id IN 
      ( SELECT r.followed_id as uid 
        FROM relationships r 
        WHERE follower_id = 1 
      ) 
   OR user_id = 1
ORDER BY microposts.created_at DESC

关于sql - 将一些 SQL 查询转换为事件记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11812727/

相关文章:

mysql - 使用表 2 列的值更新表 1 列

sql - 如何选择属性名称 (fn :local-name() with xquery

jquery - 我如何用jquery解析Json

ruby-on-rails - 使用sqlite3进行开发的Rails应用程序不会部署到heroku中

ruby - Readline、输入记录分隔符和 Ruby

mysql - 选择需要 8 秒。改进想法

sql - 如何查找违反参照完整性的记录

ruby-on-rails - acts_as_tree 并通过子标题将值传播到项目

ruby - 从哈希数组中收集值

ruby-on-rails - Rescue - NoMethodError -- 铜管类的未定义方法日志