我有三张桌子,我正试图创建一个视图。三张桌子是,
新闻
---------|---------|
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
关于mysql - 多次加入和分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28712572/