Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgre SQL数据转换为XML格式_Xml_Postgresql - Fatal编程技术网

Postgre SQL数据转换为XML格式

Postgre SQL数据转换为XML格式,xml,postgresql,Xml,Postgresql,您好,我正在尝试使用以下方法将Postgre SQL数据转换为XML格式: copy( select xmlroot ( xmlelement ( name "warehouses", xmlagg ( xmlelement ( name "warehouse", xmlelement(name "id",warehous

您好,我正在尝试使用以下方法将Postgre SQL数据转换为XML格式:

copy(
select xmlroot
(
    xmlelement
    (
        name "warehouses",
        xmlagg
        (
            xmlelement
            (
                name "warehouse",
                xmlelement(name "id",warehouse.w_id),
                xmlelement(name "name",warehouse.w_name),
                xmlelement
                (
                    name "address",
                    xmlelement(name "street",warehouse.w_street),
                    xmlelement(name "city",warehouse.w_city),
                    xmlelement(name "country",warehouse.w_country)
                ),
                xmlelement
                (
                    name "items",
                    xmlagg(
                    xmlelement
                    (   
                        name "item",
                        xmlelement(name "id",item.i_id),
                        xmlelement(name "im_id",item.i_im_id),
                        xmlelement(name "name",item.i_name),
                        xmlelement(name "price",item.i_price),
                        xmlelement(name "qty",stock.s_qty)
                    ))
                )
            )
        ) 
    ), version '1.0" encoding = "utf-8'
) from warehouse inner join stock on warehouse.w_id = stock.w_id
                  inner join item on stock.i_id = item.i_id
) to '/home/cs4221/Desktop/test.xml'
但显示错误消息:

“聚合函数调用不能嵌套”

并指向我的第二个xmlagg函数

为什么不能嵌套调用xmlagg

如果没有第二个xmlagg,输出如下所示:

<warehouses>
<warehouse>
    <id>22</id>
    <name>Namekagon</name>
    <address>
        <street>Anniversary</street>
        <city>Singapore</city>
        <country>Singapore</country>
    </address>
    <items>
        <item>
            <id>4</id>
            <im_id>54868007</im_id>
            <name>MECLIZINE HYDROCHLORIDE</name>
            <price>54.49</price>
            <qty>597</qty>
        </item>
    </items>
</warehouse>
<warehouse>
    <id>22</id>
    <name>Namekagon</name>
    <address>
        <street>Anniversary</street>
        <city>Singapore</city>
        <country>Singapore</country>
    </address>
    <items>
        <item>
            <id>5</id>
            <im_id>24658312</im_id>
            <name>Doxycycline Hyclate</name>
            <price>28.99</price>
            <qty>477</qty>
        </item>
    </items>
</warehouse>

22
纳梅卡贡
周年纪念
新加坡
新加坡
4.
54868007
盐酸美利嗪
54.49
597
22
纳梅卡贡
周年纪念
新加坡
新加坡
5.
24658312
盐酸多西环素
28.99
477

仓库id 22有两个项目4和5。我想将它们聚合到同一部分。


<warehouses>
<warehouse>
    <id>22</id>
    <name>Namekagon</name>
    <address>
        <street>Anniversary</street>
        <city>Singapore</city>
        <country>Singapore</country>
    </address>
    <items>
        <item>
            <id>4</id>
            <im_id>54868007</im_id>
            <name>MECLIZINE HYDROCHLORIDE</name>
            <price>54.49</price>
            <qty>597</qty>
        </item>
    </items>
</warehouse>
<warehouse>
    <id>22</id>
    <name>Namekagon</name>
    <address>
        <street>Anniversary</street>
        <city>Singapore</city>
        <country>Singapore</country>
    </address>
    <items>
        <item>
            <id>5</id>
            <im_id>24658312</im_id>
            <name>Doxycycline Hyclate</name>
            <price>28.99</price>
            <qty>477</qty>
        </item>
    </items>
</warehouse>
22 纳梅卡贡 周年纪念 新加坡 新加坡 4. 54868007 盐酸美利嗪 54.49 597 22 纳梅卡贡 周年纪念 新加坡 新加坡 5. 24658312 盐酸多西环素 28.99 477

每个select只能有一个xmlagg。 要解决这个问题,可以在xmlelement中使用subselect,并在那里使用下一级xmlagg

只需在查询的和处删除联接,并使用类似以下内容:

  xmlelement
  (
    name "items", 
    (  
      select xmlagg
      (
        xmlelement
        (   
          name "item",
          xmlelement(name "id",item.i_id),
          xmlelement(name "im_id",item.i_im_id),
          xmlelement(name "name",item.i_name),
          xmlelement(name "price",item.i_price),
          xmlelement(name "qty",stock.s_qty)
        )
      )
    )
  )
  from stock where warehouse.w_id = stock.w_id 
    join item on stock.i_id = item.i_id)

你能给我们举个例子,输出应该是什么样的吗?仓库id 22有两个项目4和5。我想把它们聚合到同一个部分。我使用了xmlagg,但收到错误消息:“聚合函数调用不能嵌套”(上面的输出是通过删除第二个xmlagg函数获得的)