【发布时间】:2017-04-23 07:05:22
【问题描述】:
我有 3 个表:Users、Articles 和 Votes
| Users | | Articles | | Votes |
| id | | id | | userId |
| name | | title | | articleId |
| email | | userId | | type |
我想获得每个用户的 Count voteup 和 Count votedown 用户列表。
我正在测试这个查询:
SELECT u.id,u.name,u.email,
(SELECT COUNT(*) FROM votes as v WHERE v.type=1 AND v.articleId IN
(SELECT a.id From articles as a WHERE a.userId = u.id) ) AS totalvoteup,
(SELECT COUNT(*) FROM votes as v WHERE v.type=0 AND v.articleId IN
(SELECT a.id From articles as a WHERE a.userId = u.id) ) AS totalvotedown
FROM users as u
当我通过 phpmyadmin 测试它时,我有我想要的列表(结果数与表中的用户数匹配),但是当我尝试通过节点服务器(来自 AngularJs 或 Postman)时,我得到了重复结果:
{
"users": [
[
{
"id": 1,
"name": "John Lennon",
"email": "johnlennon@gmail.com",
"totalvoteup": 0,
"totalvotedown": 0
},
{
"id": 2,
"name": "John Lennon 2",
"email": "johnlennon2@gmail.com",
"totalvoteup": 0,
"totalvotedown": 0
},
{
"id": 3,
"name": "John Lennon 3",
"email": "johnlennon3@gmail.com",
"totalvoteup": 0,
"totalvotedown": 1
},
{
"id": 4,
"name": "John Lennon 4",
"email": "johnlennon4@gmail.com",
"totalvoteup": 0,
"totalvotedown": 0
}
],
[
{
"id": 1,
"name": "John Lennon 1",
"email": "johnlennon1@gmail.com",
"totalvoteup": 0,
"totalvotedown": 0
},
{
"id": 2,
"name": "John Lennon 2",
"email": "johnlennon2@gmail.com",
"totalvoteup": 0,
"totalvotedown": 0
},
{
"id": 3,
"name": "John Lennon 3",
"email": "johnlennon3@gmail.com",
"totalvoteup": 0,
"totalvotedown": 1
},
{
"id": 4,
"name": "John Lennon 4",
"email": "johnlennon4@gmail.com",
"totalvoteup": 0,
"totalvotedown": 0
}
]
]
}
任何想法如何解决这个问题?
【问题讨论】:
-
请通过以下方式更新您的问题:a) 显示表的最小样本数据集,b) 显示您将在 MySQL 中获得的实际输出,而不是难以阅读的 JSON 输出。
标签: mysql sql angularjs node.js