2012-07-10 57 views
1

我希望itll是合法发布此,因为我知道在这个题目其他类似的职位。但我不能让其他解决方案工作,所以试图发布我自己的场景。在这个例子的其他例子中,我不太确定他们如何使用表名和行。是通过标点符号吗?为了通过计数从另一个表

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 

综观其他例子即时通讯缺少左连接。只是不能将我的头围绕如何工作。我此刻的查询看起来是这样的: $查询= “SELECT *,COUNT(PID)AS欣赏到统计GROUP BY PID ORDER BY DESC意见”;

任何帮助,非常感谢!

+0

你应该加入 – Khaleel 2012-07-10 10:49:54

回答

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获得确切一个结果行的每一篇文章,即ŧ O数统计为每篇文章分别
+0

非常感谢你的表!用我自己的结构看这个例子让我更加了解。大起大落! =) – Havihavi 2012-07-10 11:41:47

+0

如果我想在这里添加一个WHERE子句,它会去哪里? – Havihavi 2012-07-10 12:02:16

+1

阅读[文档](http://dev.mysql.com/doc/refman/5.6/en/select.html)。 – MvG 2012-07-10 12:21:43

相关问题