我有一个包含用户的表格,一个包含新闻文章的表格和一个表示用户X喜欢/不喜欢文章Y的反应的表格。我现在拥有的查询(工作正常)选择所有文章并返回相似状态每篇文章上特定用户的点击次数(如果用户既未喜欢又不喜欢,则为null)。我正在尝试修改此查询,以便它也可以统计文章的喜欢总数,而不仅仅是特定用户。
当前查询:
SELECT R.articleID, N.title, N.content, COALESCE (R.state, 'none') AS state
FROM News N
LEFT JOIN Reaction R on N.ID = R.articleid and R.personid = 1;
此外,您还可以找到所有表和字段here。
答案 0 :(得分:0)
您将需要为此执行子查询。我想它看起来像这样:
SELECT R.articleID, N.title, N.content, COALESCE (R.state, 'none') AS state,
(SELECT COUNT(1) FROM News INNER JOIN Reaction on News.ID = Reaction.articleid where News.id=N.id) as TotalCount
FROM News N
LEFT JOIN Reaction R on N.ID = R.articleid and R.personid = 1;
答案 1 :(得分:0)
我建议聚合:
FILTER
请注意,CASE
是表示条件聚合的标准SQL的一部分-Postgres支持此语法。可以用等效的{{1}}构造代替。