我希望发布此信息是合法的,因为我知道有关此主题的其他类似帖子。但我无法让其他解决方案工作,所以试图发布我自己的方案。几乎就像这样的其他例子,我不确定他们如何使用表名和行。它是通过标点符号吗?
SELECT bloggers.*, COUNT(post_id) AS post_count
FROM bloggers LEFT JOIN blogger_posts
ON bloggers.blogger_id = blogger_posts.blogger_id
GROUP BY bloggers.blogger_id
ORDER BY post_count
我有一个包含文章的表格,以及每次阅读文章时都会获得新记录的统计表格。我试图通过计算统计表中该文章ID的记录数来进行查询以对我的文章表进行排序。就像“按视图排序”功能一样。
我的2张桌子:
制品
id
统计
pid <- same as article id
查看其他示例我缺少左连接。只是无法绕过如何工作。我此刻的查询看起来像这样: $ query =“SELECT *,COUNT(pid)AS views FROM statistics GROUP BY pid ORDER BY views DESC”;
非常感谢任何帮助!
答案 0 :(得分:3)
SELECT article.*, COUNT(statistics.pid) AS views
FROM article LEFT JOIN statistics ON article.id = statistics.pid
GROUP BY article.id
ORDER BY views DESC
思路:
NULL
,即使用左连接COUNT
仅计算非NULL
值,因此请按右表计算以得出正确的零结果GROUP BY
为每篇文章准确获取一个结果行,即单独统计每篇文章的统计信息