Hi all,
   I have the following tables (parent and two children)

CREATE SEQUENCE person_seq;
CREATE TABLE person(
        _id integer DEFAULT nextval('person_seq') NOT NULL,
        _timestamp TIMESTAMP NOT NULL,
        _lastModified TIMESTAMP NOT NULL,
        name VARCHAR(255) NOT NULL,
        age INTEGER DEFAULT NULL,
        PRIMARY KEY (_id)
);
CREATE TABLE person_nationality(
        _id serial NOT NULL,
        _parent INTEGER NOT NULL,
        nationality VARCHAR(255) NOT NULL,
        FOREIGN KEY (_parent) REFERENCES person (_id) ON DELETE CASCADE,
        PRIMARY KEY (_id)
);
CREATE TABLE person_variables(
        _id serial NOT NULL,
        _parent INTEGER NOT NULL,
        variable VARCHAR(255) DEFAULT NULL,
        value VARCHAR(255) DEFAULT NULL,
        FOREIGN KEY (_parent) REFERENCES person (_id) ON DELETE CASCADE,
        PRIMARY KEY (_id)
);

I'm trying to generate XML element for each person which also contains
the person nationality and variables in one result set

SELECT
XMLROOT (
  XMLELEMENT (
    NAME information,
    XMLATTRIBUTES (
      person._id AS pid
    ),
        XMLAGG(
                XMLELEMENT(
                        name "nationality",
                        person_nationality.nationality
                )
        ),
        XMLAGG(
                XMLELEMENT(
                        name "value",
                        person_variables.value
                )
        )
  ),
  VERSION '1.0',
  STANDALONE YES
)
FROM person
INNER JOIN person_nationality ON person_nationality._parent = person._id
INNER JOIN person_variables ON person_variables._parent = person._id
GROUP BY person._id
LIMIT 100 OFFSET 10000;

The above query return number of variables * nationality for each
person which is expected (for me) because of the join logic. Also i
can't use DISTINCT keyword in XMLAGG function.

Any idea how to do this? or is there is any aggregate function returns
array from row set, i didn't find any in the documenation.

Thanks in advance

Mina.

-- 
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql

Reply via email to