我有三张桌子,我正试图创建一个视图。三张桌子是,
新闻

---------|---------|
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/

10-09 09:44