1
比方說,我有一個Campaign
模型has_many :questions
。導軌檢查兒童模型的數量
我想獲取所有包含3個以上問題的廣告系列。所以我想要做這樣的事情:Campaign.where("questions.length > 3")
有沒有辦法做這個查詢?
比方說,我有一個Campaign
模型has_many :questions
。導軌檢查兒童模型的數量
我想獲取所有包含3個以上問題的廣告系列。所以我想要做這樣的事情:Campaign.where("questions.length > 3")
有沒有辦法做這個查詢?
對於更多的ActiveRecord尋找查詢發現活動有超過3個問題,你可以試試這個
Campaign.joins(:questions).group('campaigns.id').having('count(campaign_id) > 3')
查詢將是:
Campaign.where("id IN (SELECT compaign_id
FROM questions
GROUP BY compaign_id
HAVING COUNT(*) > 3")
你知道,如果這個查詢比Miles的答案更有效率? –
這很有趣,我的查詢效率更高,因爲'HAVING'首先過濾結果,它減少了'Compaign'的序列掃描,與'JOIN'先比較,然後過濾。我們可以使用'rails db',然後運行'explain your_query'命令進行比較。順便說一下,你可以在'rails console'中運行查詢來檢查運行時間。 –
棒極了!感謝幫助! –