Обсуждение: xml output
hi there!i wanted to ask how to get an xml output from a table like this:<words><first_name>joe</first_name><first_name>ian</first_name><first_name>carl</first_name><first_name>ben</first_name></words>what ihave is the following: SELECT xmlelement(name words, xmlforest(nachname)) FROM person SELECT xmlelement(name words,xmlforest(nachname))FROM personbut that gives me this:<words><first_name>joe</first_name></words><words><first_name>ian</first_name></words><words><first_name>carl</first_name></words><words><first_name>ben</first_name></words>thanks inadvance!bye, flo Neu: WEB.DE De-Mail - Einfach wie E-Mail, sicher wie ein Brief! JetztDe-Mail-Adresse reservieren: https://produkte.web.de/go/demail02
On 23 August 2010 12:33, Florian Henge <florian.henge82@web.de> wrote:
hi there!
i wanted to ask how to get an xml output from a table like this:
<words>
<first_name>joe</first_name>
<first_name>ian</first_name>
<first_name>carl</first_name>
<first_name>ben</first_name>
</words>
what i have is the following:SELECT xmlelement(name words,xmlforest(nachname))FROM personSELECT
xmlelement(name words,
xmlforest(nachname))
FROM person
but that gives me this:
<words><first_name>joe</first_name></words>
<words><first_name>ian</first_name></words>
<words><first_name>carl</first_name></words>
<words><first_name>ben</first_name></words>
thanks in advance!
bye, flo
You need to use xmlagg:
SELECT
xmlelement(name words,
xmlagg(
xmlforest(first_name)
)
)
FROM person
Regards
--
Thom Brown
Registered Linux user: #516935
---------------------
Von: Thom Brown
Gesendet: 23.08.2010 14:09:05
An: Florian Henge
Betreff: Re: [NOVICE] xml output
On 23 August 2010 12:33, Florian Henge <[florian.henge82@web.de]> wrote:
hi there!
i wanted to ask how to get an xml output from a table like this:
joe
ian
carl
ben
what i have is the following:
SELECT xmlelement(name words,
xmlforest(nachname))
FROM person
SELECT
xmlelement(name words,
xmlforest(nachname))
FROM person
but that gives me this:
joe
ian
carl
ben
thanks in advance!
bye, flo
You need to use xmlagg:
SELECT
xmlelement(name words,
xmlagg(
xmlforest(first_name)
)
)
FROM person
Regards
--
Thom Brown
Registered Linux user: #516935
_________________________________
Hi!
Thanks, that worked perfectly for me, except for one problem.
I have like 20 times the name "Joe" in my table, but want to get it only once in the xml output file.
How can is do this? I tried SELECT DISTINCT but it didn't work.
Thanks in advance!
___________________________________________________________
Neu: WEB.DE De-Mail - Einfach wie E-Mail, sicher wie ein Brief!
Jetzt De-Mail-Adresse reservieren: https://produkte.web.de/go/demail02
On 25 August 2010 09:53, Florian Henge <florian.henge82@web.de> wrote:
> Hi!
>
> Thanks, that worked perfectly for me, except for one problem.
>
> I have like 20 times the name "Joe" in my table, but want to get it only once in the xml output file.
>
> How can is do this? I tried SELECT DISTINCT but it didn't work.
If you're using PostgreSQL 8.4 or greater you can do:
WITH people AS (
SELECT DISTINCT first_name
FROM person
ORDER BY first_name
)
SELECT
xmlelement(name words,
xmlagg(
xmlforest(first_name)
)
)
FROM people
If not, you can do:
SELECT
xmlelement(name words,
xmlagg(
xmlforest(first_name)
)
)
FROM (
SELECT DISTINCT first_name
FROM person
ORDER BY first_name
) AS people
Although maybe there's a nicer way of doing it. Note that if you want
aggregates in your results, use GROUP BY instead of DISTINCT.
--
Thom Brown
Registered Linux user: #516935