[英]Hand writing a SQL query with a has_many relationship
由於無法控制的原因,我需要在MySQL中手動編寫SQL查詢。
我的模型是:
class Survey < ActiveRecord::Base
has_many :buildings
has_many :floors, through: :buildings
has_many :workspaces, through: :floors
end
class Workspace < ActiveRecord::Base
belongs_to :floor
end
class Floor < ActiveRecord::Base
has_many :workspaces
end
我需要根據其具有的工作空間數量來訂購調查。
在Rails代碼中,我可以執行類似的操作: @survey.workspaces.size
,這將使我獲得@survey
擁有的工作區數量。
給定此SQL查詢:
SELECT `surveys`.*
FROM `surveys`
ORDER BY surveys.workspaces.size asc
LIMIT 10
OFFSET 0
如何手動編寫基於工作空間數量的訂單查詢?
將范圍添加到模型。 找到產生所需答案的AR。 將to_sql
添加到該ActiveRecord中以獲取所需的SQL代碼。
我不確定要將SQL與Rails混合還是僅將SQL混合使用。 純SQL將是:
SELECT s.id, count(w.id) AS workspaces_count
FROM surveys s LEFT JOIN workspaces w ON s.id = w.survey_id
GROUP BY s.id
ORDER BY 2
如果要從Survey添加其他列,則還需要將它們添加到GROUP BY。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.