由于我无法控制的原因,我需要在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
如何根据工作空间金额手动编写查询?
答案 0 :(得分:0)
向模型添加范围。找到导致想要答案的AR。将to_sql
添加到该ActiveRecord以获取所需的SQL代码。
答案 1 :(得分:0)
我不确定您想要将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。