【发布时间】:2015-09-22 17:48:29
【问题描述】:
我正在尝试加入三个查询、2 个表和一个计数,连接本身工作正常:
SELECT * FROM `AccountInfo` NATURAL JOIN `userStats` WHERE `username` = 'x'
我想加入:
SELECT COUNT(following) FROM `followers` WHERE `following` = 'x'
为了获得关注特定用户的关注者数量,但我无法让加入工作。有什么想法吗?
Account info:
|username|firstname|sirname |address |postcode|
|--------|-------- |--------|--------|--------|
| user1 | first | last |road A | 1234 |
| user2 | name2 | last2 |road b | 4567 |
| | | | | |
| | | | | |
userStats
|username|followers|following|lastseen |reputation|
|--------|-------- |-------- |-------- |-------- |
| user1 | | |DD:MM:YY | 120 |
| user2 | | | DD:MM:YY| 130 |
| | | | | |
| | | | | |
followers
|follower|following|
|--------|-------- |
| user1 | user 2 |
| user2 | user 1 |
| user1 | user 3 |
| | |
自然加入成功附加了 accountInfo 和 userStats 但我还想计算用户拥有的关注者数量,即用户名出现在“关注”列中的次数,以及他关注的用户数量,即用户名出现在“关注者”中的次数。 (虽然我没有问后半部分)
对于示例数据,它将显示:关注 = 2 和关注者 = 1
我不介意数据是否出现在连接表末尾的单独列中,但理想情况下会代替 userStats 表中的以下/关注者数据
【问题讨论】:
-
username或followers表中的其他字段是否可以加入?现在你的第二个查询只输出一个数字,但没有username或id或其他东西加入你的第一个查询,它只是一个总数。表架构或至少三个表的字段列表对我们帮助您最有帮助。 -
是的,userStats 中有一个关注者字段,我感觉这可能需要一个 INNERJOIN 但不太确定如何去做.. 或者可能是“SELECT COUNT(following) AS xyz”并将其连接到最后(不太理想的选项)
-
请分享您的表格结构、一些示例数据以及您想要获得的结果。
-
已对其进行编辑以包含我正在寻找的内容
-
不清楚你想要什么。表 userStats 中的列关注者和关注者的作用是什么?如果它们是下表中的计数,那么为什么要显示空白?哪个是“连接表”? (第一个查询结果?)“取代userStats表中的following/followers数据”是什么意思? (更新表 usersStats 以从表关注者中计算计数?从表 userStats 中删除关注者和关注者并将它们放在查询结果中?)请显示示例输入表和所需的输出表。