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

3 टेबल के साथ पिवट टेबल

ऐसा लगता है कि आपके पास अज्ञात संख्या में शुल्क हो सकते हैं जिन्हें आप कॉलम में बदलना चाहते हैं, अगर ऐसा है तो आप इसे क्वेरी करने के लिए तैयार बयानों का उपयोग करना चाहेंगे:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when f.fee_name = ''',
      f.fee_name,
      ''' then f.fee_amount else 0 end) AS `',
      f.fee_name, '`'
    )
  ) INTO @sql
FROM fee f;

SET @sql = CONCAT('SELECT s.school_id, ', @sql, '
                    , sum(f.fee_amount) as Total
                  FROM students s
                  LEFT JOIN stud_fee sf
                    on s.id = sf.stud_id
                  LEFT JOIN fee f
                    on sf.fee_id = f.id
                   GROUP BY s.school_id');


PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

देखें SQL Fiddle with Demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं php . का उपयोग कर Google sql क्लाउड में डेटाबेस में किसी तालिका से चुनिंदा रिकॉर्ड निष्पादित करने में सक्षम नहीं हूं

  2. php-mysql संस्करण MySQL सर्वर के साथ संघर्ष करता है

  3. क्या mysqldump प्रगति पट्टी का समर्थन करता है?

  4. mysql पासवर्ड मेरे डंप को गड़बड़ कर रहा है

  5. Mysql में भौतिकीकृत दृश्य