mysql - 作为 mysql/rails 查询的一部分,对链接表中的记录进行计数

标签 mysql ruby-on-rails ruby

我有一个 View ,必须显示大约一千条记录。这些是来自客户的想法(如建议墙)。我正在用 SQL 进行查询,因为它要快得多。因此,在 Controller 中,我有两个操作。这些是

def index
  @ideas = ideas_index_data
end

def ideas_index_data
  ideas = Idea.publically_visible
    .select(
      "ideas.*, concat(users.first_name, ' ', users.last_name) as user_name ")
    .joins("inner join users on users.id = ideas.users_id")

  ActiveRecord::Base.connection.exec_query(ideas.to_sql)
end

View 中我可以这样做

@ideas.each do |idea|
  = i['description']
  %br
  = i['notes]

等等。这会将 15 秒的查询变成 2 秒的查询。然而,虽然我可以轻松地从 ideasusers 表中获取所有数据,但我需要一些更复杂的东西。

每个想法idea_likes表中都有一定数量的喜欢。我需要在 ideas_index_data 查询中包含每个想法的点赞数。所以我需要扩展查询的连接和选择部分,但到目前为止还没有什么乐趣。任何人都可以帮忙。 idea_likes 表通过 idea_id

引用 ideas

最佳答案

我会尝试这样的事情:

  ideas = Idea.publically_visible
    .select(
      "ideas.*, concat(users.first_name, ' ', users.last_name) as employee_name, COUNT(employee_likes.id) as number_likes ")
    .joins("inner join users on users.id = ideas.users_id left join employee_likes.idea_id = ideas.id")
    .group('ideas.id, users.id')

关于mysql - 作为 mysql/rails 查询的一部分,对链接表中的记录进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34742291/

相关文章:

mysql - Heroku 数据库 :push is not working

ruby-on-rails - Windows 上的 ruby : Cannot install mysql2 gem - Failed to build gem native extension

ruby - 错误 : undefined method `[]' for nil:NilClass

ruby-on-rails - 如何初始化 'attr_accessor'属性值?

css - 以纵向而非横向呈现的 pdf 文件

Java - 'field list' jdbc 错误中的未知列

php - 单个查询获取给定数据库中所有表名、行数和状态为 '1' 的行数

mysql - 如何获取行组的最大日期

ruby-on-rails - Searchkick + Bloodhound + Typeahead 自动完成

ruby-on-rails - Rails:simple_form中的提交按钮的自定义包装器?