gpt4 book ai didi

mysql - rails - mysql连接多个表

转载 作者:行者123 更新时间:2023-11-29 03:07:57 25 4
gpt4 key购买 nike

我想在这里做一个基本的报告

  • 显示包含姓名、年龄等详细信息的用户列表。
  • 还显示其他详细信息,例如帖子数、上次事件时间等。
  • 所有这些其他细节都与用户有 has_many 关系

这就是我现在正在做的:

User.find(
:all,
:select => "users.id, users.name, count(distinct(posts.id)) as posts_count",
:joins => "left outer join posts on posts.user_id = users.id",
:group => "users.id",
:limit => "100"
)

已将 posts 表中的 user_id 列编入索引

我的问题是执行此操作需要很长时间,有时当我尝试创建更多表格以及事件、评论等帖子时会挂起。

是否有单独加入计数或其他方式来实现此目的?

提前致谢

最佳答案

我认为其中之一可能会起作用,但与往常一样,在执行外部联接时,查询会变慢。

User.count(:include=>[:posts])

User.count(:select => "users.id, users.name, count(distinct(posts.id)) as posts_count",
:joins => "left outer join posts on posts.user_id = users.id",
:group => "users.id")

User.find(:all, :include => [:posts])

你也可以在初始化文件或 irbrc 文件中这样放置:

ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Base.clear_active_connections!

并在控制台中输入查询时检查查询。

帖子数

User.all.posts.size

至于稍后报告每个帖子计数,您可以使用已有的用户记录来完成。

@users = User.find(:all, :include=> [:posts])

稍后...

<% @users.each do |user|
Posts: <%= user.posts.size %>
<% end %>

用户按帖子排序

@sorted_users = @users.sort_by{|user| user.posts.size }

https://stackoverflow.com/a/5739222/1354978

关于mysql - rails - mysql连接多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12576769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com