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

मूल पंक्तियों से स्तंभ शीर्षक वाले स्तंभों में तालिका पंक्तियों में शामिल हो गए

मैं बस GROUP_CONCAT() तैयार स्टेटमेंट जेनरेट करने के लिए कर्सर के बजाय:

SELECT CONCAT(
 ' SELECT MDE_ID,'

,  GROUP_CONCAT(
     't', MDF_ID, '.MFV_Value AS `', REPLACE(MDF_Label, '`', '``'), '`'
   )

,' FROM ModuleEntries '

, GROUP_CONCAT(
    'LEFT JOIN ModuleEntryFieldValues AS t', MDF_ID, '
       ON t', MDF_ID, '.MFV_MDE_ID = ModuleEntries.MDE_ID
      AND t', MDF_ID, '.MFV_MDF_ID = ', MDF_ID
  SEPARATOR ' ')

) INTO @qry FROM ModuleFields;

अपने नमूना डेटा @qry . के साथ इसे और अधिक पठनीय बनाने के लिए व्हाइटस्पेस संपादन के लिए सहेजें तब इसमें शामिल होगा:

SELECT MDE_ID,
       t1.MFV_Value AS `Height`,
       t2.MFV_Value AS `Width`,
       t3.MFV_Value AS `Weight`
FROM   ModuleEntries
  LEFT JOIN ModuleEntryFieldValues AS t1
         ON t1.MFV_MDE_ID = ModuleEntries.MDE_ID AND t1.MFV_MDF_ID = 1
  LEFT JOIN ModuleEntryFieldValues AS t2
         ON t2.MFV_MDE_ID = ModuleEntries.MDE_ID AND t2.MFV_MDF_ID = 2
  LEFT JOIN ModuleEntryFieldValues AS t3
         ON t3.MFV_MDE_ID = ModuleEntries.MDE_ID AND t3.MFV_MDF_ID = 3

तब कोई उस कथन को तैयार और निष्पादित कर सकता है:

PREPARE stmt FROM @qry;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @qry = NULL;

जो निम्नलिखित परिणाम देता है:

MDE_ID    Height    Width    Weight
     1    120cms    30cms    (null)

इसे sqlfiddle पर देखें ।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Class.forName(com.mysql.jdbc.Driver).newInstance()

  2. जावा में तैयार स्टेटमेंट के साथ LIMIT कमांड का उपयोग करते हुए MySQL सिंटैक्स त्रुटि

  3. समूह और स्ट्रिंग कॉलम से संख्या की तुलना करें

  4. MySQL डेटाबेस इंजन के साथ कार्य करना

  5. एकल सर्वर पर MySQL प्रतिकृति