@VoteyDisciple's answer सही रास्ते पर है, लेकिन उसकी क्वेरी में कुछ सुधार की आवश्यकता है:
SELECT c.id, c.title,
SUM(ts1.section_id = 1) AS doc1,
SUM(ts1.section_id = 2) AS doc2,
SUM(ts1.section_id = 3) AS doc3,
SUM(ts1.section_id = 4) AS doc4
FROM category AS c
LEFT JOIN category_link_section AS ts1
ON (c.id = ts1.category_id)
GROUP BY c.id;
स्पष्टीकरण:
- द
IF()
एक्सप्रेशन बेमानी हैं क्योंकि समानता पहले से ही 1 या 0 लौटाती है। ts1.section_id=1
लें शामिल होने की स्थिति से बाहर, या आपको अन्यsection_id
कभी नहीं मिलेगा मान।c.id
के आधार पर समूहित करें केवल। मुझे लगता है कि ओपी प्रति श्रेणी केवल एक पंक्ति चाहता है, और प्रत्येकsection_id
. की गणना के लिए कॉलम चाहता है संबंधित श्रेणी के लिए मूल्य। यदि क्वेरी कोc.id, ts1.section_id
. द्वारा समूहीकृत किया जाता है , तो प्रति श्रेणी अधिकतम चार पंक्तियाँ होंगी।- चयन सूची में अल्पविरामों को हटा दें। लाइन की शुरुआत में तैरते कॉमा बदसूरत दिखते हैं।;-)