【发布时间】:2014-03-14 00:28:46
【问题描述】:
我有三张桌子:
Messages
messageid | userid | text
Ex: 1 | 1303 | hey guys
Users
userid | username
Ex:
1303 | trantor
1301 | tranro1
1302 | trantor2
Favorites
messageid | userid
Ex:
1 | 1302
1 | 1301
我想要做的是显示一个包含用户名的表格,并计算他们的消息被收藏的次数。在上面的示例中,我想查询“每个用户有多少条消息被点赞了两次?” 它会显示一个表格,其中有一排写着
trantor | 1
一个自然的扩展是用“至少 2”、“超过 6”等精确替换两次。我试图将 count 与 join 结合起来,发现自己很困惑。而且由于表很大,我得到计数但不确定我的查询是否正常工作。我已经阅读了this article,但仍然很困惑:L
到目前为止我所拥有的:
SELECT USERS.username, COUNT(FAVORITES.id) FROM USERS INNER JOIN FAVORITES ON FAVORITES.userID=USERS.id WHERE COUNT(FAVORITES.id) > 2;
但我认为它不起作用。
在 S.O.我在“相关子查询”上找到了these questions,但我完全糊涂了。
会是这样吗?
SELECT USERS.username,
, ( SELECT COUNT(FAVORTIES.userid)
FROM FAVORITES INNER JOIN ON MESSAGES
WHERE FAVORITES.messageid = MESSAGES.messageid
)
FROM USERS
【问题讨论】: