2

ボランティアのレコードをいくつか取得しています。いくつかのフィルタリングとソートがありますが、これは問題ありません。しかし、各レコードに対して別々のクエリを実行することを避けるために、select句のサブクエリとして、各ボランティアが支援しているChildrenの数をカウントしたい(childrenテーブルのvolunteer_idを使用)。ボーナスとして、このカウントでもソートできるのは良いことです!選択句のActiveRecordサブクエリ

私はこのような生成されたクエリで終わると「子供の列にアクセスできるようにしたいと思います:

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

はARELでこれを行う方法はありますか?私は周りのスカウトを少し持っていて、まだ何も見つけていません。

また、childrenテーブルに参加してget: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 

GROUP BYクエリを使用するためのARにおける方法.group()があります。

+0

ありがとうございました。私は、ARで選択句とグループ化を設定する方法についていくつかの研究を行う必要があると思います – Jerome

関連する問題