簡體   English   中英

手寫具有has_many關系的SQL查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM