Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 联接表以查找可用点和已完成点的总和_Sql_Sqlite - Fatal编程技术网

Sql 联接表以查找可用点和已完成点的总和

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

我有三个表:成就、角色和角色成就表,用于存储已完成成就的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

我尝试过联合,但它没有返回我需要的结果。 下面是我的示例表

成就表

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

非常感谢你!我很欣赏这个可笑的快速而伟大的回答:)