mich nach einer Möglichkeit, die folgenden SQL in Rails zu erzeugen (um es einen Umfang zu machen), so dass ich es Kette könnte mit weiteren scopes (zB Article.published.most_comments
):Verschachtelte SQL SELECT in Rails 4
SELECT *, cs.count
FROM articles, (
SELECT article_id, count(*)
FROM comments
GROUP BY comments.article_id
) cs
WHERE articles.id = cs.article_id
ORDER BY cs.count DESC;
ich habe etwas entlang der Linien von Article.joins(:comments).select('*').group('comments.article_id')
versucht, aber das erzeugt nicht die gewünschte SQL:
SELECT * FROM "articles"
INNER JOIN "comments" ON "comments"."article_id" = "articles"."id"
GROUP BY comments.article_id
(PSQL): PG::GroupingError: ERROR: column "articles.id"
must appear in the GROUP BY clause or be used in
an aggregate function
Und es scheint keine .from
Verfahren, bei dem sein ich die verschachtelten SQL SELECT angeben könnte .