【问题标题】:Multiple join and grouping多连接和分组
【发布时间】:2015-02-25 06:26:10
【问题描述】:

我正在尝试创建三个表来创建视图。这三个表是,

新闻

---------|---------|
newsID   |  title  | 
---------|---------|
  1      |  title1 |
  2      |  title2 |
  3      |  title3 |
---------|---------|

cmets

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

我将使用此查询来创建视图,因此我不能使用子查询。我该如何解决这个问题?

【问题讨论】:

    标签: mysql sql join group-by


    【解决方案1】:

    实现这个查询:

        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
    

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 2017-09-19
      • 2013-01-29
      • 1970-01-01
      • 2021-02-25
      • 2012-06-04
      • 2010-11-21
      • 2012-09-15
      • 2017-01-19
      相关资源
      最近更新 更多