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

पिवोटिंग टेबल केवल 1 पंक्ति लौटाता है

पहला:आपके पास एक ही product_id =1 के लिए दो विशेषताएं हैं, तालिका बदलें product_attributes इस तरह -

INSERT INTO `product_attributes` (`product_id`,`type`,`value`) VALUES
  (1,1,'blue'),
  (1,2,'shirt'),
  (2,1,'green'),
  (2,2,'pants');

फिर इसे आजमाएं -

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(IF(pat.name = ''', name, ''', pa.value, NULL)) AS ', name
    )
  ) INTO @sql
FROM product_attribute_types;

SET @sql = CONCAT('SELECT pa.product_id, ', @sql, ' FROM product_attributes pa INNER JOIN product_attribute_types pat ON pa.type = pat.id GROUP BY pa.product_id');

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

परिणाम:

+------------+-------+-------+
| product_id | color | name  |
+------------+-------+-------+
|          1 | blue  | shirt |
|          2 | green | pants |
+------------+-------+-------+

यदि आवश्यक हो तो WHERE फ़िल्टर जोड़ें।



  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 ने वर्तमान दिनांक को सम्मिलित करने पर DATETIME फ़ील्ड में सेट किया है

  2. लोड_फाइल फ़ंक्शन mysql में काम नहीं कर रहा है

  3. एक परियोजना में Mongodb और Mysql दोनों का उपयोग करना

  4. अद्वितीय यादृच्छिक अल्फ़ान्यूमेरिक वर्ण उत्पन्न करें जो 7 वर्ण लंबे हों

  5. पोल डेटाबेस स्कीमा