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

मैं mysql देशी json फ़ंक्शन का उपयोग करके नेस्टेड json ऑब्जेक्ट कैसे उत्पन्न करूं?

आपको ये त्रुटियां मिल रही हैं इसका कारण यह है कि मूल जेसन ऑब्जेक्ट अपने इनपुट में से एक के रूप में परिणाम सेट की अपेक्षा नहीं कर रहा है, आपको {नाम, स्ट्रिंग} आदि जैसे साधारण ऑब्जेक्ट जोड़े की आवश्यकता है बग रिपोर्ट - भविष्य की कार्यक्षमता में उपलब्ध हो सकती है ... इसका सीधा सा मतलब है कि आपको अपने बहु-पंक्ति परिणामों को अल्पविराम से अलग किए गए परिणामों के संयोजन में बदलने और फिर एक जोंस सरणी में बदलने की आवश्यकता है।

आपके पास यह आपके दूसरे उदाहरण के साथ लगभग था।

GROUP_CONCAT फ़ंक्शन के साथ आप वह हासिल कर सकते हैं जो आप चाहते हैं

select json_object(
  'id',p.id 
 ,'desc',p.`desc`
 ,'child_objects',json_array(
                     (select GROUP_CONCAT(
                                 json_object('id',id,'parent_id',parent_id,'desc',`desc`)
                             )   
                      from child_table 
                      where parent_id = p.id))
                   )
 from parent_table p;

यह लगभग काम करता है, यह सबक्वेरी को एक स्ट्रिंग के रूप में मानता है जो वहां से बचने वाले पात्रों को छोड़ देता है।

'{\"id\": 1, 
\"desc\": \"parent row 1\", 
\"child_objects\": 
    [\"
    {\\\"id\\\": 1,
     \\\"desc\\\": \\\"child row 1\\\", 
    \\\"parent_id\\\": 1
    },
    {\\\"id\\\": 2, 
    \\\"desc\\\": \\\"child row 2\\\", 
    \\\"parent_id\\\": 1}\"
    ]
}'

इसे उचित प्रारूप में काम करने के लिए, आपको JSON आउटपुट बनाने के तरीके को निम्नानुसार बदलना होगा:

select json_object(
  'id',p.id 
 ,'desc',p.`desc`
 ,'child_objects',(select CAST(CONCAT('[',
                GROUP_CONCAT(
                  JSON_OBJECT(
                    'id',id,'parent_id',parent_id,'desc',`desc`)),
                ']')
         AS JSON) from child_table where parent_id = p.id)

 ) from parent_table p;

यह आपको सटीक परिणाम देगा जिसकी आपको आवश्यकता है:

'{\"id\": 1, 
\"desc\": \"parent row 1\", 
\"child_objects\": 
    [{\"id\": 1, 
    \"desc\": \"child row 1\", 
    \"parent_id\": 1
    }, 
    {\"id\": 2, 
    \"desc\": \"child row 2\", 
    \"parent_id\": 1
    }]  
}'


  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 सर्वर से कनेक्शन टूट गया, सिस्टम त्रुटि:0

  2. MySQL उच्च उपलब्धता फ्रेमवर्क समझाया - भाग I:परिचय

  3. लिनक्स में कमांड लाइन से MySQL डेटाबेस का बैकअप कैसे लें

  4. SQL:उन पंक्तियों का चयन करना जहाँ स्तंभ मान पिछली पंक्ति से बदल गया है

  5. कैसे बैकअप और पुनर्स्थापित करने के लिए (निर्यात और आयात) MySQL डेटाबेस ट्यूटोरियल