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

मैं MySQL में पिवट टेबल आउटपुट कैसे वापस कर सकता हूं?

यह मूल रूप से है एक पिवट टेबल।

इसे कैसे प्राप्त किया जाए इस पर एक अच्छा ट्यूटोरियल यहां पाया जा सकता है:http:// www.artfulsoftware.com/infotree/qrytip.php?id=78

मैं इस पोस्ट को पढ़ने और इस समाधान को अपनी आवश्यकताओं के अनुसार अनुकूलित करने की सलाह देता हूं।

अपडेट करें

ऊपर दिए गए लिंक के वर्तमान में उपलब्ध नहीं होने के बाद, मैं आप सभी के लिए कुछ अतिरिक्त जानकारी प्रदान करने के लिए बाध्य महसूस करता हूं, जो यहां पर mysql पिवट उत्तरों की खोज कर रहे हैं। इसमें वास्तव में बड़ी मात्रा में जानकारी थी, और मैं वहां से सब कुछ यहां नहीं डालूंगा (और भी अधिक क्योंकि मैं उनके विशाल ज्ञान की प्रतिलिपि नहीं बनाना चाहता), लेकिन मैं कुछ सलाह दूंगा कि कैसे धुरी से निपटें आम तौर पर पेकू से उदाहरण के साथ एसक्यूएल तरीके से टेबल करता है जिसने पहली बार सवाल पूछा था।

हो सकता है कि लिंक जल्द ही वापस आए, मैं इस पर नज़र रखूंगा।

स्प्रेडशीट का तरीका...

बहुत से लोग इस उद्देश्य के लिए MSExcel, OpenOffice या अन्य स्प्रेडशीट-टूल्स जैसे टूल का उपयोग करते हैं। यह एक वैध समाधान है, बस वहां पर डेटा कॉपी करें और इसे हल करने के लिए GUI द्वारा ऑफ़र किए जाने वाले टूल का उपयोग करें।

लेकिन... यह सवाल नहीं था, और इससे कुछ नुकसान भी हो सकते हैं, जैसे डेटा को स्प्रेडशीट में कैसे लाया जाए, समस्यात्मक स्केलिंग आदि।

एसक्यूएल तरीका...

देखते हुए उसकी टेबल कुछ इस तरह दिखती है:

CREATE TABLE `test_pivot` (
  `pid` bigint(20) NOT NULL AUTO_INCREMENT,
  `company_name` varchar(32) DEFAULT NULL,
  `action` varchar(16) DEFAULT NULL,
  `pagecount` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`pid`)
) ENGINE=MyISAM;

अब उसकी वांछित तालिका देखें:

company_name    EMAIL   PRINT 1 pages   PRINT 2 pages   PRINT 3 pages
-------------------------------------------------------------
CompanyA        0       0               1               3
CompanyB        1       1               2               0

पंक्तियाँ (EMAIL , प्रिंट x पृष्ठ ) शर्तों के समान। मुख्य समूह company_name . द्वारा है ।

शर्तों को सेट करने के लिए यह केस -बयान। किसी चीज़ के आधार पर समूह बनाने के लिए, उपयोग करें ... GROUP BY

इस धुरी को प्रदान करने वाला मूल SQL कुछ इस तरह दिख सकता है:

SELECT  P.`company_name`,
    COUNT(
        CASE 
            WHEN P.`action`='EMAIL' 
            THEN 1 
            ELSE NULL 
        END
    ) AS 'EMAIL',
    COUNT(
        CASE 
            WHEN P.`action`='PRINT' AND P.`pagecount` = '1' 
            THEN P.`pagecount` 
            ELSE NULL 
        END
    ) AS 'PRINT 1 pages',
    COUNT(
        CASE 
            WHEN P.`action`='PRINT' AND P.`pagecount` = '2' 
            THEN P.`pagecount` 
            ELSE NULL 
        END
    ) AS 'PRINT 2 pages',
    COUNT(
        CASE 
            WHEN P.`action`='PRINT' AND P.`pagecount` = '3' 
            THEN P.`pagecount` 
            ELSE NULL 
        END
    ) AS 'PRINT 3 pages'
FROM    test_pivot P
GROUP BY P.`company_name`;

यह वांछित परिणाम बहुत तेजी से प्रदान करना चाहिए। इस दृष्टिकोण के लिए प्रमुख नकारात्मक पक्ष, आप अपनी पिवट तालिका में जितनी अधिक पंक्तियाँ चाहते हैं, उतनी ही अधिक स्थितियों को आपको अपने SQL कथन में परिभाषित करने की आवश्यकता होगी।

इससे भी निपटा जा सकता है, इसलिए लोग तैयार स्टेटमेंट, रूटीन, काउंटर आदि का उपयोग करते हैं।

इस विषय के बारे में कुछ अतिरिक्त लिंक:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Node.js का उपयोग करके MySQL से कैसे जुड़ें?

  2. MySQL क्वेरीज़ में सिंगल कोट, डबल कोट और बैकटिक्स

  3. दिनांक के बीच mysql क्वेरी का चयन करें?

  4. ODBC एप्लिकेशन को MySQL से कनेक्ट करना

  5. MySQL जाँचता है कि क्या कोई तालिका अपवाद को फेंके बिना मौजूद है