2

因此,我收到了一些志願者記錄,並進行了一些篩選和排序,這很好。但是,我還希望計算每個志願者幫助的兒童人數(在children表上使用volunteer_id),作爲select子句中的子查詢,以避免對每條記錄執行單獨的查詢。作爲獎勵,能夠按這個數字排序也是很好的!select子句中的ActiveRecord子查詢

我想用這樣所生成的查詢落得並能夠訪問「孩子」欄:

SELECT id, name, (SELECT COUNT(*) FROM children WHERE volunteer_id = volunteers.id) AS kids FROM volunteers 

是否與阿雷爾這樣做的方法嗎?我周圍有一個偵察員,還沒有發現任何東西。

另外,是否有可能加入到子表中並得到:count(children.id)?

感謝所有幫助:)

回答

1

與SQL這樣做的正確的方法是用GROUP BY子句:

SELECT v.id, v.name, COUNT(*) AS kids 
FROM volunteers v 
LEFT OUTER JOIN children c ON v.id = c.volunteer_id 
GROUP BY v.id, v.name 

有一個在AR使用GROUP BY查詢的方法.group()

+0

謝謝比爾,我想我需要做一些研究,圍繞如何在AR中設置select子句和分組 – Jerome