加入表以查找可用点数的SUM和完成的点数

时间:2014-09-18 19:08:22

标签: sql sqlite

我有三个表:成就,角色和角色成就表,用于存储已完成成就和用户ID的ID。我希望得到每个类别,可能的总分数以及完成的数量。

我能够获得每个类别和点数,但我也没有成功检索完成的计数。

我目前使用它来获取每个类别和可能的点数

SELECT achievements.category, SUM(points) AS Total
FROM achievements
GROUP BY achievements.category ORDER BY achievements._id asc

我得到了这些结果。

Category    Total
Operations   50
Events       25

我也可以获得完成的点数

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,但它没有返回我需要的结果。 这是我的示例表

成就表

Category        Title               Points
Operations      Epic Enemies          25
Operations      Explosive Conflict    25
Events          Bounty Contract       25

Character_Achievements表

Character        Character_id       Achievements_id
Operations              1               1
Events                  1               3

我正在寻找的结果就是这样。

结果

Category    Completed   Total
Operations     25         50
Events         25         25

我能够

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您可以将SUMCASE一起使用:

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