對於Employee has_many Clients
的情況,我正在嘗試編寫一個ActiveRecord查詢,該查詢將返回所有具有n個或更多客戶端的員工。編寫一個連接查詢來查找所有至少有一個客戶端的僱員,但將查詢擴展到這個更一般的案例已經讓我難倒了。如何選擇超過n個子記錄的所有記錄
編輯 - 我應該補充一點,我試圖完全在數據庫級別完成此操作。我想避免在Ruby中迭代集合。
對於Employee has_many Clients
的情況,我正在嘗試編寫一個ActiveRecord查詢,該查詢將返回所有具有n個或更多客戶端的員工。編寫一個連接查詢來查找所有至少有一個客戶端的僱員,但將查詢擴展到這個更一般的案例已經讓我難倒了。如何選擇超過n個子記錄的所有記錄
編輯 - 我應該補充一點,我試圖完全在數據庫級別完成此操作。我想避免在Ruby中迭代集合。
感謝畝,vijikumar,這是我想出來的
Employee.select("employees.*").joins(:clients).group("employees.id").having("count(clients.id) > ?", n)
@employees=Employee.select{|e|e.clients.length > n }
活動記錄查詢相同..
@employees=Employee.find(:all, :joins=>"as emp inner join clients as c on c.employee_id=emp.id", :select=>"emp.id", :group=>'emp.id having count(c) > n')
它會給員工ID的誰都是有N多的客戶。
試試這個,
@emp_client = []
@emp = Employee.all
@emp.each do |e|
if @emp.clients.present?
@emp_clinet << @emp
end
end
MySQL或Postgres的? – sohaibbbhatti
.... postgres .... – brad
我也有Squeel寶石可用於我,如果有幫助 – brad