2013-07-19 76 views
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_steps和任務具有領域:comments_count

在我的情況下,索引頁我要顯示所有屬於特定情況下,commnts_count的計數。意思是如果案例'案例1'有兩個案例步驟'案例步驟1'和'案例步驟2'和'案例步驟1'具有三個任務'任務1','任務2'和'任務3',並且'案例步驟2'具有兩個任務'任務4 '和'Task5',那麼它應該顯示來自所有表'Case1','Case Step1','Case Step2','Task1','Task2'和'Task3','Task4'和'任務5' 。

現在得到如何寫確切的查詢來獲取所有計數...試了很多。

回答

0

我會建議你用下面的sql查詢寫一個find_by_sql查詢。只需替換1爲您的情況編號

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