Sql 联接表以查找可用点和已完成点的总和
我有三个表:成就、角色和角色成就表,用于存储已完成成就的ID和用户ID。我希望获得每个类别、可能的总积分以及已完成的数量 我能够获得每个类别和可能的点数,但我也无法检索完成的计数 我现在用它来获取每个类别和可能的点数Sql 联接表以查找可用点和已完成点的总和,sql,sqlite,Sql,Sqlite,我有三个表:成就、角色和角色成就表,用于存储已完成成就的ID和用户ID。我希望获得每个类别、可能的总积分以及已完成的数量 我能够获得每个类别和可能的点数,但我也无法检索完成的计数 我现在用它来获取每个类别和可能的点数 SELECT achievements.category, SUM(points) AS Total FROM achievements GROUP BY achievements.category ORDER BY achievements._id asc 我得到了这些结果 C
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
我尝试过联合,但它没有返回我需要的结果。
下面是我的示例表
成就表
Category Title Points
Operations Epic Enemies 25
Operations Explosive Conflict 25
Events Bounty Contract 25
Character Character_id Achievements_id
Operations 1 1
Events 1 3
人物成就表
Category Title Points
Operations Epic Enemies 25
Operations Explosive Conflict 25
Events Bounty Contract 25
Character Character_id Achievements_id
Operations 1 1
Events 1 3
我想要的结果是这样的
结果
Category Completed Total
Operations 25 50
Events 25 25
我能够如果我正确理解了您的问题,您可以将
总和
与案例
一起使用:
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
非常感谢你!我很欣赏这个可笑的快速而伟大的回答:)