2013-11-04 31 views
1

疾病:查找用戶的痛苦編輯的特定疾病

我試圖從用戶患疾病A.

老問題(錯誤的)得到所有其他疾病:

我試圖讓用戶對一些患有疾病也遭受其他疾病:

class User 
    has_many :treatments 
end 

class Disease 
    has_many :treatments 
end 

class Treatment 
    belongs_to :user 
    belongs_to :disease 
end 

我有一些工作代碼:

找誰對特定疾病折磨的所有用戶的ID:

user_ids = Treatment.joins(:user).where(disease_id: 250).pluck(:user_id) 

獲得基於用戶ID的所有疾病

Disease.where("id != 250").where(id: Treatment.select("DISTINCT disease_id").where(user_id: user_ids)) 

有沒有更簡單的方法?也許一個查詢?

回答

0

編輯: 如果你想使用一個查詢,你可以用這一個:

select distinct d1.id from diseases as d1 
    JOIN treatments as t1 on d1.id=t1.disease_id 
    where exists (
    select t2.id from treatments as t2 
     where t2.disease_id = 250 AND t2.user_id=t1.user_id 
) AND d1.id <> 250; 
+0

對不起,我問錯了問題; /它應該是:我找不爲用戶疾病。因此,首先我尋找所有患有疾病A的用戶,然後我需要該用戶列出其他疾病。 – dzejdzej

+0

已將編輯添加到我的答案中。 – hedgesky

+0

完美!非常感謝! – dzejdzej