我使用MySQL 4.2,我有2个表:MySQL查询计算与加入不同的表
tbl_User商店的用户ID和REGCODE。 REGCODE是用于注册服务的代码用户。 tbl_Message存储由每个用户发布的消息。
我需要查询tbl_User中的所有用户的相应REGCODE才能获得总数。然后,我想知道这些用户中有多少人在tbl_Message中至少有一个其USERID与AUTHORID相匹配的条目。最后一行是用户拥有帖子的百分比。
我的目标是计算从最后一排两个表中的比例,但我不知道如何加入表中查询得到正确的答案。
表图表:http://img526.imageshack.us/img526/6105/tablep.png
我昨天问到这个问题,并@ mathematical.coffee告诉我一个简单的查询得到我想要的结果。它起初工作,但我发现查询与COUNT(tbl_User.USERID)的一些问题,并在我接受答案后离开加入。
你可以从这个查询看到,“COUNT(tbl_User.USERID)为totalUsers”由左侧影响连接条件,因而总的用户数是错误的。 有人可以帮助我,非常感谢!
SELECT REGCODE,
COUNT(tbl_User.USERID) as totalUsers,
COUNT(tbl_Message.MESSAGEID) as usersWhoPosted
COUNT(tbl_Message.MESSAGEID)/COUNT(tbl_User.USERID)*100 As Percent
FROM tbl_User
LEFT JOIN tbl_Message ON tbl_User.USERID=tbl_Message.AUTHORID
WHERE REGCODE BETWEEN 9001 AND 9008
GROUP BY REGCODE
结果:
REGCODE totalUsers usersWhoPosted Percent
9001 763 233 30.5374
...
9008 345 235 68.1159
'COUNT(DISTINCT tbl_User.USERID)作为totalUsers' – 2012-01-31 00:24:40