我有一个 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 秒的查询。然而,虽然我可以轻松地从 ideas
和 users
表中获取所有数据,但我需要一些更复杂的东西。
每个想法
在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/