| 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: | Whole Thread | Raw Message | 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"
| 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 |