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

संबंधित तालिका में प्रत्येक रंग उत्पाद के लिए आकार कॉलम को पंक्ति के रूप में प्रदर्शित करें?

कोई PIVOT कमांड नहीं है (MySQL पिवट टेबल (पंक्तियों को कॉलम में बदलें) ) MySQL में तो आपकी क्वेरी आकार के लिए स्थिर होगी। इसलिए इसे आवेदन में स्थगित करना बेहतर है।

सोचा अगर आपके पास आकार कॉलम के लिए केवल सीमित और छोटा डोमेन है तो आप नीचे पोस्ट की गई निम्नलिखित क्वेरी का उपयोग कर सकते हैं:

mysql> SELECT 
    ->      c.color as color,
    ->      SUM(IF(s.size = 32, o.amount, 0)) as '32',
    ->      SUM(IF(s.size = 34, o.amount, 0)) as '34',
    ->      SUM(IF(s.size = 36, o.amount, 0)) as '36',
    ->      SUM(IF(s.size = 38, o.amount, 0)) as '38'
    ->  FROM `colors` c
    ->  INNER JOIN `order` o
    ->  INNER JOIN `sizes` s
    ->      WHERE c.`id` = o.`color` and s.`id` = o.`size`
    -> GROUP BY color 
    -> ;
+-------+------+------+------+------+
| color | 32   | 34   | 36   | 38   |
+-------+------+------+------+------+
| blue  |    3 |    4 |    2 |    0 |
| red   |    1 |    0 |    0 |    0 |
+-------+------+------+------+------+
2 rows in set (0.04 sec)

जैसा कि आप IF स्थितियों में देख सकते हैं कि मैं आकार के मूल्य का उपयोग करता हूं, जिसका अर्थ है कि प्रश्न स्थिर है। मैं मान रहा हूं कि सभी संभव आकार 32, 34, 36, 38 हो सकते हैं।

वर्किंग डेमो @SQL Fiddle

संपादित करें:जैसा कि मैं शुरू से कह रहा हूं यदि आकार मान अज्ञात हैं या डोमेन बड़ा है तो बेहतर है कि आप अपनी सर्वर स्क्रिप्ट (जैसे PHP) के भीतर पिवट कार्य स्थगित कर दें, फिर भी आप स्क्रिप्ट में संसाधित करने के लिए निम्न क्वेरी का उपयोग कर सकते हैं:

SELECT 
     c.color as color,
     s.size,
     o.amount  --Edit: added 
 FROM `colors` c
 INNER JOIN `order` o
 INNER JOIN `sizes` s
     WHERE c.`id` = o.`color` and s.`id` = o.`size`

देखें कि यह कैसे काम करता है @SQL fiddle .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कॉलम डेटाटाइप और पंक्तियों की संख्या से MySQL तालिका द्वारा उपयोग किए जाने वाले डिस्कस्पेस की गणना कैसे करें?

  2. जब प्रत्येक प्रविष्टि एक मध्यम आकार के आकार के क्षेत्र में फिट होगी तो MySQL लॉन्गटेक्स्ट आकार के क्षेत्र का उपयोग करने में क्या नुकसान है?

  3. SQL त्रुटि:'database.table.field ग्रुप बाय में नहीं है'

  4. सभी लौटाए गए mysql प्रश्नों को दिनांक मान कैसे असाइन करें

  5. MySQL डेटाबेस डेटा को MVC .NET वेब एप्लिकेशन पर कैसे पुश करें