首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接表以查找可用点数和已完成点数的总和

连接表以查找可用点数和已完成点数的总和
EN

Stack Overflow用户
提问于 2014-09-18 19:08:21
回答 1查看 26关注 0票数 0

我有三个表:成就表、字符表和Character_Achievements表,它们存储已完成成果的id和用户id。我期待得到每一个类别,总数量的积分可能和数量也完成了。

我能够得到每个类别和数量的可能,但我在检索完成的计数,以及不成功。

我现在用它来获取每个类别和可能的点数。

代码语言:javascript
复制
SELECT achievements.category, SUM(points) AS Total
FROM achievements
GROUP BY achievements.category ORDER BY achievements._id asc

我得到了这些结果。

代码语言:javascript
复制
Category    Total
Operations   50
Events       25

我也可以得到积分的数量。

代码语言:javascript
复制
SELECT achievements.category, SUM(points) AS Completed
FROM achievements
LEFT JOIN character_achievements
ON character_achievements.achievements_id = achievements._id
LEFT JOIN character
ON character_achievements.character_id = character._id
WHERE character._id = '1'

它只返回已完成的类别。如何将这两个查询组合在一起。已完成的业务50项活动25

我试过UNION,但它没有返回我需要的结果。这是我的示例表

成就表

代码语言:javascript
复制
Category        Title               Points
Operations      Epic Enemies          25
Operations      Explosive Conflict    25
Events          Bounty Contract       25

Character_Achievements表

代码语言:javascript
复制
Character        Character_id       Achievements_id
Operations              1               1
Events                  1               3

我想要的结果会是这样的。

结果

代码语言:javascript
复制
Category    Completed   Total
Operations     25         50
Events         25         25

我能

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-18 19:23:26

如果我正确理解了你的问题,你可以用SUMCASE

代码语言:javascript
复制
SELECT  a.category, 
    SUM(CASE WHEN ca.achievements_id is not null then points end) AS Completed,
    SUM(points) Total
FROM achievements a
    LEFT JOIN character_achievements ca
        ON ca.achievements_id = a._id
GROUP BY a.category 
ORDER BY a._id asc
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25920550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档