使用具有多个联接的聚合

时间:2014-02-14 10:22:53

标签: mysql sql

我有三张桌子:

  • 想法
  • 评论

我的目标是提取

  1. 来自“内容”和“标题”等想法的基本数据
  2. 该想法的总票数
  3. 关于这个想法的评论数量
  4. 问题在于,当我使用两个LEFT JOINS(一个在注释上,另一个在投票上)时,我会用重复的行结束upp并且投票的总和是不正确的。那就是:

    SELECT ideas.*, 
           vote, 
           comments.id 
    FROM   ideas 
           LEFT JOIN votes 
                  ON ideas.id = votes.idea_id 
           LEFT JOIN comments 
                  ON ideas.id = comments.idea_id 
    

    每次投票都会生成多行,使得总和(投票)无效。

    [修改] 因此,以下查询将无法获得正确的投票总额:

    SELECT ideas.*, 
           sum(votes.vote), 
           count(comments.id)
    FROM ideas
        LEFT JOIN votes 
            ON ideas.id = votes.idea_id 
        LEFT JOIN comments 
            ON ideas.id = comments.idea_id
    GROUP BY votes.id
    

0 个答案:

没有答案