2015-05-06 196 views
0

有2个表: - 主题 - 职位SQL查询双SUM语句

文章有 “等级” 功能:

topic 1, post 1, rating 2 
topic 1, post 1, rating 2 
topic 1, post 2, rating 1 

主题有 “意见” 的特点:

topic 1, views 5 
topic 1, views 3 

我想获得所有主题的帖子评分总和以及所有主题的总视图。 我的 SQL:

​​

它返回没有正确的价值观,我认为 - 通过加入的原因 - 他们需要分组2倍。

我能做些什么来解决?

后加入阅读题型:

SELECT 
    t1.`forum_id`, 
    t1.`topic_id`, 
    SUM(t1.`rating`) AS rating, 
    t3.`views` AS views 
FROM 
    `forum_ratings_posts` t1 
LEFT JOIN (
    SELECT 
     SUM(t2.`views`) AS views, 
     t2.`topic_id` 
    FROM 
     `forum_ratings_topics` t2 
    GROUP BY 
     t2.`topic_id` 
) t3 ON t1.`topic_id` = t3.`topic_id` 
GROUP BY 
    t1.`topic_id` 

回答

1

看看这会有所帮助。此方法在派生表上使用LEFT JOIN,并在该派生表中执行SUMMING for topics表。 LEFT JOIN将确保您拥有帖子表中的条目,而不管主题表中是否存在相应的条目。如果您需要更多信息,请与我们联系。

SELECT 
    t1.forum_id, 
    t1.topic_id, 
    SUM(t1.rating), 
    temp.t2_sum 
FROM 
    posts t1 
LEFT JOIN 
    (SELECT SUM(views) AS t2_sum, topic_id FROM topics GROUP BY 
topic_id) AS temp 
ON t1.topic_id = temp.topic_id 
GROUP BY 
t1.topic_id 
+0

现在就试一试 – gzhegow

+0

我对代码做了细微的修改。请尝试更新的查询并发布错误消息,如果这不起作用。 – Maximus2012

+0

它的工作原理!大! – gzhegow