多重连接和分组
Multiple join and grouping
我正在尝试创建一个视图的三个表。三张表是,
新闻
---------|---------|
newsID | title |
---------|---------|
1 | title1 |
2 | title2 |
3 | title3 |
---------|---------|
评论
-----------|----------|-----------|
commentID | newsID | comment |
-----------|----------|-----------|
1 | 1 | |
2 | 1 | |
3 | 1 | |
4 | 1 | |
5 | 2 | |
-----------|----------|-----------|
票数
-----------|----------|------|
voteID | newsID | vote |
-----------|----------|------|
1 | 1 | 5 |
2 | 2 | 4 |
3 | 1 | 5 |
-----------|----------|------|
我的查询是
SELECT news.newsID, SUM(votes.vote) AS total,COUNT(comments.commentID) AS comment_count
FROM news
LEFT JOIN votes ON news.newsID = votes.newsID
LEFT JOIN comments ON news.newsID = comments.newsID
GROUP BY newsID
本次查询的结果
-----------|----------|---------------|
newsID | total | comment_count |
-----------|----------|---------------|
1 | 40 | 8 |
2 | 4 | 1 |
3 | null | 0 |
-----------|----------|---------------|
但应该是这样的
-----------|----------|---------------|
newsID | total | comment_count |
-----------|----------|---------------|
1 | 10 | 4 |
2 | 4 | 1 |
3 | null | 0 |
-----------|----------|---------------|
我将使用此查询来创建视图,因此我不能使用子查询。我该如何解决这个问题?
执行这个查询:
SELECT news.newsID, (SELECT SUM(votes.vote) FROM votes WHERE votes.newsID = news.newsID) AS total, (SELECT COUNT(comments.commentID)FROM comments WHERE comments.newsID = news.newsID) AS comment_count
FROM news
GROUP BY newsID
我正在尝试创建一个视图的三个表。三张表是,
新闻
---------|---------|
newsID | title |
---------|---------|
1 | title1 |
2 | title2 |
3 | title3 |
---------|---------|
评论
-----------|----------|-----------|
commentID | newsID | comment |
-----------|----------|-----------|
1 | 1 | |
2 | 1 | |
3 | 1 | |
4 | 1 | |
5 | 2 | |
-----------|----------|-----------|
票数
-----------|----------|------|
voteID | newsID | vote |
-----------|----------|------|
1 | 1 | 5 |
2 | 2 | 4 |
3 | 1 | 5 |
-----------|----------|------|
我的查询是
SELECT news.newsID, SUM(votes.vote) AS total,COUNT(comments.commentID) AS comment_count
FROM news
LEFT JOIN votes ON news.newsID = votes.newsID
LEFT JOIN comments ON news.newsID = comments.newsID
GROUP BY newsID
本次查询的结果
-----------|----------|---------------|
newsID | total | comment_count |
-----------|----------|---------------|
1 | 40 | 8 |
2 | 4 | 1 |
3 | null | 0 |
-----------|----------|---------------|
但应该是这样的
-----------|----------|---------------|
newsID | total | comment_count |
-----------|----------|---------------|
1 | 10 | 4 |
2 | 4 | 1 |
3 | null | 0 |
-----------|----------|---------------|
我将使用此查询来创建视图,因此我不能使用子查询。我该如何解决这个问题?
执行这个查询:
SELECT news.newsID, (SELECT SUM(votes.vote) FROM votes WHERE votes.newsID = news.newsID) AS total, (SELECT COUNT(comments.commentID)FROM comments WHERE comments.newsID = news.newsID) AS comment_count
FROM news
GROUP BY newsID