Postgres до xml Заказать - PullRequest
       1

Postgres до xml Заказать

1 голос
/ 11 февраля 2020

Мы выполняем следующий запрос postgres:

select
AT.id,
AT.goal,
SS.id,
SS.index,
SS.goal,
TK.id,
TK.index,
TK.label,
TK.actions,
TK.type,
TK.group,
TK.blind,
TK.dynamic
from
automations as SS,
automation_sets as AT,
tasks as TK
where
SS.automation_set = 321
AND SS.automation_set = AT.id
AND TK.automation = SS.id
order by
SS.index, TK.index

, который возвращает следующие данные: извлечение данных

Как использовать Postgres xml функции для агрегирования данных на различных XML уровнях, являющихся первым уровнем AT.ID + AT.goal и вторым уровнем SS.ID + SS.goal?

Любая помощь будет признательна. Большое спасибо

РЕДАКТИРОВАТЬ - Нам удалось получить информацию, которую мы хотим, но у нас все еще есть одна проблема ... Использовано SQL:

SELECT XMLELEMENT(name automation_set,
    XMLATTRIBUTES(ASET_ID as id),
        XMLAGG(xml_task_group))
FROM (SELECT AT.id as ASET_ID,
        XMLELEMENT(name automation,
        XMLATTRIBUTES(SS.goal as id),
            XMLAGG(XMLELEMENT(name task,
            XMLATTRIBUTES(TK.id as task_id, TK.label, TK.actions, TK.type, TK.group, TK.blind, TK.dynamic, TK.index)))) as xml_task_group
from
    automations as SS,
    automation_sets as AT,
    tasks as TK
where
    SS.automation_set = 321
    AND SS.automation_set = AT.id
    AND TK.automation = SS.id
group by 
      AT.id, SS.id
order by 
      SS.index) t
group by t.ASET_ID

, но мы не можем получить порядок по TK.index, который является индексом задачи. Мы должны убедиться, что они в правильном порядке, и мы пока не можем это сделать ...

enter image description here

Любая помощь будет высоко оценена.

Приветствия

1 Ответ

1 голос
/ 12 февраля 2020

Готово, успеем это сделать ...

Я выложу для справки.

SELECT XMLELEMENT(name automation_set,
    XMLATTRIBUTES(ASET_ID as id),
        XMLAGG(xml_task_group))
FROM (SELECT AT.id as ASET_ID,
        XMLELEMENT(name automation,
        XMLATTRIBUTES(SS.goal as id),
            XMLAGG(XMLELEMENT(name task,
            XMLATTRIBUTES(TK.id as task_id, TK.label, TK.actions, TK.type, TK.group, TK.blind, TK.dynamic, TK.index)) order by TK.index)) as xml_task_group
from
    automations as SS,
    automation_sets as AT,
    tasks as TK
where
    SS.automation_set = 321
    AND SS.automation_set = AT.id
    AND TK.automation = SS.id
group by 
      AT.id, SS.id
order by 
      SS.index) t
group by t.ASET_ID

Еще раз спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...