我有三个表:成就,角色和角色成就表,用于存储已完成成就和用户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
我能够
答案 0 :(得分:0)
如果我正确理解您的问题,您可以将SUM
与CASE
一起使用:
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