Re: xpath sobre postgres

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Regina Gonzalez <rgonzale(at)safp(dot)cl>
Cc: Ayuda Postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: xpath sobre postgres
Date: 2007-12-04 19:26:33
Message-ID: 20071204192633.GJ4727@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Alvaro Herrera escribió:

> En este caso puntual el problema es que xpath_list retorna listas
> planas y no tienes como saber que parte de la segunda lista viene del
> primer nodo, que parte del segundo, etc. Creo que usando xpath_table
> podrias encontrar una solucion al problema que tienes.

Quizas algo asi, tomando el XML que mandaste

alvherre=# create table cotizaciones (a int, b text);
CREATE TABLE
alvherre=# insert into cotizaciones values (1, '<cotizaciones>
alvherre'# <periodo aaaamm="2001-01">
alvherre'# <tipofondo codigo="B">
alvherre'# <cuotas>20</cuotas>
alvherre'# </tipofondo>
alvherre'# <tipofondo codigo="A">
alvherre'# <cuotas>10</cuotas>
alvherre'# </tipofondo>
alvherre'# </periodo>
alvherre'# <periodo aaaamm="2001-02">
alvherre'# <tipofondo codigo="C">
alvherre'# <cuotas>20</cuotas>
alvherre'# </tipofondo>
alvherre'# </periodo>
alvherre'# </cotizaciones>');
INSERT 0 1

alvherre=# select * from xpath_table('a', 'b', 'cotizaciones', '//cotizaciones/periodo/@aaaamm|//cotizaciones/periodo/tipofondo/@codigo|//cotizaciones/periodo/tipofondo/cuotas', 'true') as t(a int, coti text, tipofondo text, cuotas text);
a | coti | tipofondo | cuotas
---+---------+-----------+--------
1 | 2001-01 | B | 20
1 | 2001-02 | A | 10
1 | | C | 20
(3 rows)

Hay un problema porque entrega el ultimo periodo NULL ... no me queda
claro por qué :-) Pero espero que te dé una idea.

--
Alvaro Herrera http://www.amazon.com/gp/registry/CTMLCN8V17R4
Y dijo Dios: "Que sea Satanás, para que la gente no me culpe de todo a mí."
"Y que hayan abogados, para que la gente no culpe de todo a Satanás"

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Ariel Fellay 2007-12-04 20:30:16 Re: SQLSTATE[08006] [7] server closed the connectionunexpectedly....
Previous Message jlcambero 2007-12-04 19:12:53 Re: Evaluar una cadena de caracteres para un Check