मेरे पास तीन टेबल हैं: उपलब्धियां, वर्ण, और 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