Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL क्वेरी - 3 टेबल को एक साथ मिलाएं, एक कॉलम से ग्रुप करें और दूसरे के लिए गिनें 2

मेरी समझ के आधार पर, यहाँ वह प्रश्न है जिसके साथ मैं आया हूँ:


    SELECT name, membersCount, IFNULL(totalCount, 0) goalsCount FROM
    (
      SELECT m.team_id, SUM(innerQuery.goalsCount) totalCount
      FROM (
        SELECT m.id memberId, COUNT(*) goalsCount
        FROM Members m
        JOIN Goals g
        ON m.id = g.member_id
        GROUP BY member_id
      ) innerQuery
      JOIN Members m
      ON innerQuery.memberId = m.id
      GROUP BY m.team_id
    ) inner_1
    RIGHT JOIN 
    (
      SELECT t.id, t.name, COUNT(*) membersCount
      FROM Teams t
      JOIN Members m
      ON t.id = m.team_id
      GROUP BY team_id
    ) inner_2
    ON inner_1.team_id = inner_2.id

क्वेरी का विश्लेषण:

# 1। इससे जुड़े लक्ष्यों की संख्या (इनरक्वेरी) के साथ सदस्य आईडी पाएं


SELECT m.id memberId, COUNT(*) goalsCount
    FROM Members m
    JOIN Goals g
    ON m.id = g.member_id
    GROUP BY member_id

#2. लक्ष्यों के कुल योग के साथ टीम आईडी प्राप्त करें (आंतरिक_1)


     SELECT m.team_id, SUM(innerQuery.goalsCount) totalCount
      FROM (
          .... Sub-query in step 1
      ) innerQuery
      JOIN Members m
      ON innerQuery.memberId = m.id
      GROUP BY m.team_id

#3. प्रति टीम कुल सदस्यों की संख्या प्राप्त करें (आंतरिक_2)


    SELECT t.id, t.name, COUNT(*) membersCount
      FROM Teams t
      JOIN Members m
      ON t.id = m.team_id
      GROUP BY team_id

#4. राइट जॉइन इनर_1 और इनर_2 (चूंकि न्यूल होगा) और उस 0 को जांचने और बदलने के लिए IFNULL का उपयोग करें


    SELECT name, membersCount, IFNULL(totalCount, 0) goalsCount FROM
    (
     .... Sub-query in step 2
    ) inner_1
    RIGHT JOIN 
    (
      .... Sub-query in step 3
    ) inner_2
    ON inner_1.team_id = inner_2.id




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या मैं दो अलग-अलग तालिकाओं में एक ही विदेशी कुंजी बाधा का उपयोग कर सकता हूं?

  2. MySQL क्वेरी ऑप्टिमाइज़ेशन - आंतरिक प्रश्न

  3. शीर्ष 5 MySQL GUI उपकरण (निःशुल्क और सशुल्क)

  4. SQL में स्ट्रिंग को डेटाटाइम ऑब्जेक्ट में कनवर्ट करें

  5. पायथन के साथ MySQL प्रारूप में परिणाम प्रिंट करें