/ उपलब्ध बिंदुओं के लिए एसयूएम खोजने के लिए टेबल्स में शामिल हों और पूर्ण किए गए अंक - sql, sqlite

उपलब्ध अंक और पूर्ण किए गए बिंदुओं के लिए SUM खोजने के लिए तालिकाओं में शामिल हों - sql, sqlite

मेरे पास तीन टेबल हैं: उपलब्धियां, वर्ण, और Character_Achievements तालिका जो पूर्ण उपलब्धियों और उपयोगकर्ता आईडी के "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 № 1

अगर मैं आपके प्रश्न को सही ढंग से समझ रहा हूं, तो आप उपयोग कर सकते हैं 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