2011-12-20 121 views
1

我有一个tbl_user,其中包含有关用户的信息,我有一个tbl_article,其中包含物品+的tbl_user家长通过孩子的表

我们有父子关系的ID的数量排序,因为每用户可能有很多文章,这就是为什么我在文章表中包含user_id的原因。

我想列出有大多数文章的10个用户......我找遍虽然我无法找到它......我想过这个问题,可是没有用,我不擅长SQL查询。

预先感谢您

+2

什么是RDBMS你在用吗?如果第10名有一个平局会怎么样? – 2011-12-20 19:58:51

+0

我只是使用mySQL的PHP​​ ...这是关于一个web项目 – SmootQ 2011-12-20 20:07:15

回答

3
SELECT TOP(10) 
    tbl_user.id, 
    COUNT(tbl_article.user_id) 
FROM 
    tbl_user 
LEFT JOIN 
    tbl_article 
    ON tbl_user.id = tbl_article.user_id 
GROUP BY 
    tbl_user.id 
ORDER BY 
    COUNT(tbl_article.user_id) DESC 
LIMIT 
    10 

取决于哪个RDBMS你使用,你可能需要TOP(10)LIMIT 10,等我同时这样你就可以看到,但只能使用所使用RDBMS的一个;)

+0

谢谢你的朋友... +1,我已经得到它的工作,如果只有一个选项可以选择两个最佳答案;) – SmootQ 2011-12-20 20:12:30

+0

@SimoTAQI - Awwwwww,我有'LIMIT'版本第一;)你得到了你虽然需要,但这是很重要的。不是我的虚荣心。或者需要外部赞誉和理由。我的存在不依赖于StackOverflow中的投票和点。 *** ***哭 – MatBailie 2011-12-20 20:16:42

+0

HHHHH,然后我就检查了第一次谈话,你之间有两个:-) 好,最佳答案:-) – SmootQ 2011-12-20 20:19:02

2
SELECT TOP 10 
    UserID, COUNT(Article) 
FROM tbl_User u 
INNER JOIN tbl_Article a 
    ON a.Userid = u.userid 
GROUP BY userid 
ORDER BY COUNT(article) DESC 

所有你需要的是一个GROUP BYJOIN

如果没有为用户提供要包括0文章的潜力,你应该使用LEFT JOIN

选项还COUNT(DISTINCT Article)如果有关于重复的关注即可。

+0

非常感谢朋友... +1,我会试试这个:-) – SmootQ 2011-12-20 20:01:11

+1

如果前10名之一有0篇文章,这赢得了' t包括它;) – MatBailie 2011-12-20 20:02:06

+1

如果他们有0篇文章,那么他们不应该被包括在内,我猜测,因为与其他所有没有文章的用户将会有无限的联系。 – JNK 2011-12-20 20:03:49