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

PostgreSQL के साथ XML में एक से कई संबंध कैसे प्रस्तुत करें

कोशिश करें:

SELECT p.id as pack_id,
       XMLELEMENT(name taskgroup,
                  XMLATTRIBUTES(tg.id as id),
                  XMLAGG(XMLELEMENT(name task,
                         XMLATTRIBUTES(t.id as id)) as xml_task_group
FROM packages p
JOIN package_taskgroup pt ON p.id = pt.package_id
JOIN taskgroups tg on pt.taskgroup_id = tg.id
JOIN taskgroup_task tt on tg.id = tt.taskgroup_id
JOIN tasks t on tt.task_id = t.id
WHERE p.id = somePackageId 
GROUP BY p.id, tg.id

यह आपको p.id . के लिए सभी कार्य समूह देगा आपने निर्दिष्ट किया।

फिर:

SELECT XMLELEMENT(name package, 
                  XMLATTRIBUTES(pack_id as id),
                  XMLAGG(xml_task_group))
FROM (previous SELECT here)

यह आपको आपके द्वारा निर्दिष्ट संरचना प्रदान करेगा।

विवरण:XMLAGG , XML फ़ंक्शन

सम्मिलित चयन इस तरह दिखेगा:

SELECT XMLELEMENT(name package, 
                  XMLATTRIBUTES(pack_id as id),
                  XMLAGG(xml_task_group))
FROM (SELECT p.id as pack_id,
             XMLELEMENT(name taskgroup,
                        XMLATTRIBUTES(tg.id as id),
                        XMLAGG(XMLELEMENT(name task,
                                          XMLATTRIBUTES(t.id as id)
                       ))) as xml_task_group
      FROM packages p
      JOIN package_taskgroup pt ON p.id = pt.package_id
      JOIN taskgroups tg on pt.taskgroup_id = tg.id
      JOIN taskgroup_task tt on tg.id = tt.taskgroup_id
      JOIN tasks t on tt.task_id = t.id
      WHERE p.id = somePackageId 
      GROUP BY p.id, tg.id) t
GROUP BY pack_id

मैंने बस पहले चयन को FROM . में कॉपी किया है दूसरे का खंड।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में लघु दिन का नाम प्राप्त करें

  2. PostgreSQL लॉक प्रतीक्षा की अवधि को नियंत्रित करना

  3. PG त्रुटि सर्वर से कनेक्ट नहीं हो सकी:कनेक्शन अस्वीकृत क्या सर्वर पोर्ट 5432 पर चल रहा है?

  4. कैसे LocalTime () PostgreSQL में काम करता है

  5. वृद्धि काउंटर और रेल पहले postgreSQL अजीब व्यवहार का उपयोग कर