我可以使用 ActiveRecord 获得以下 SQL 查询的相同输出吗?
SELECT d.title, COUNT(ep.*)
FROM posts d
LEFT JOIN comments ep
ON d.title = ep.post_title
GROUP BY d.title;
我试过Post.joins(:comments).group(:title).count('comments.*')
。
我可以使用 ActiveRecord 获得以下 SQL 查询的相同输出吗?
SELECT d.title, COUNT(ep.*)
FROM posts d
LEFT JOIN comments ep
ON d.title = ep.post_title
GROUP BY d.title;
我试过Post.joins(:comments).group(:title).count('comments.*')
。
你们的关系,或者至少这个请求,非常不寻常。
通常
comments
会通过在表中posts
添加来关联。post_id
comments
话虽如此,如果情况并非如此,您可以使用标题添加关系,如下所示:
然后你可以使用
Post.left_joins(:comments).group(:title).count('comments.*')
如果您已经建立了自然关系,并且由于某种原因试图将其创建为一次性关联查询,您可以按如下方式进行。
两者都将生成所需的 SQL(无别名)并将
Hash
以以下形式返回{"post_title_1" => count_of_comments, "post_title_2" => count_of_comments, ...}