0

我有评论、案例、案例步骤和任务表,其关系为:

评论型号:

belongs_to :commentable, polymorphic: true, counter_cache: true

案例型号:

has_many :case_steps, class_name: 'CaseStep', foreign_key: 'case_id', dependent: :destroy
has_many :tasks, through: :case_steps

案例步骤模型:

belongs_to :case, class_name: 'Case', foreign_key: 'case_id'
has_many :tasks, class_name: 'Task', foreign_key: 'case_step_id', dependent: :destroy

任务模型:

belongs_to :case_step, class_name: 'CaseStep', foreign_key: 'case_step_id'

所有三个表 case、case_steps 和 tasks 都有字段:comments_count

在我的案例索引页面上,我必须显示属于特定案例的所有 commnts_count 的计数。表示如果一个案例'Case1'有两个案例步骤'Case Step1'和'Case Step2'并且'Case Step1'有三个任务'Task1'、'Task2'和'Task3',并且'Case Step2'有两个任务'Task4' ' 和 'Task5' ,那么它应该显示所有表'Case1'、'Case Step1'、'Case Step2'、'Task1'、'Task2'和'Task3'、'Task4'和'的所有comments_count的计数任务 5'。

现在了解如何编写确切的查询以获取所有计数...尝试了很多。

4

1 回答 1

0

我建议您使用以下 sql 查询编写 find_by_sql 查询。只需将 1 替换为您的案例 ID

Select id , case_name , count(comments_count) from cases where id =1 group by id, case_name
Union
Select case_type_id , case_type_name , count(comments_count) from case_types where case_id =1 group by case_id, case_type_name
Union
Select case_step_id , case_step_name , count(comments_count) from case_steps where case_step_id in (select id from case_steps where case_id =1) group by case_step_id , case_step_name 
于 2013-07-19T08:44:18.300 回答