From: | Sergio <ximelis(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Problema con consulta simple |
Date: | 2007-02-28 11:44:13 |
Message-ID: | 1677675e0702280344n2d6c96d7ia68f0faa4075f2f3@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola es mi primera consulta a la lista, primero felicitaros a todos
por el alto nivel de esta lista.
Estoy haciendo pruebas con PostgreSQL sólo para aprender y me he
encontrado con un comportamiento extraño en una consulta simple, estoy
ejecutando un PostgreSQL 8.2.1 sobre Debian Etch para AMD64 que me he
compilado yo.
El problema es el siguiente:
He creado una tabla para intentar hacer consultas recursivas
pruebas=# create table delegaciones (
id_delegacion serial primary key,
nombre varchar,
padre int references delegaciones(id_delegaciones)
);
He insertado unos cuantos valores con :
pruebas=# INSERT INTO delegaciones (nombre, padre) values ('XXXX',
(select id_delegacion from delegaciones where nombre='YYYYYY'));
Al final los valores en la tabla son los siguientes:
pruebas=# select * from delegaciones;
id_delegacion | nombre | padre
---------------+---------------+-------
1 | principal | 1
2 | Barcelona | 1
3 | madrid | 1
4 | gerona | 1
5 | lleida | 1
6 | rubi | 2
7 | sant cugat | 2
8 | terrassa | 2
9 | castellana | 3
10 | lavapies | 3
11 | ximelis | 6
12 | can serrafosa | 6
13 | casa | 11
(13 filas)
Duración: 0,302 ms
Ahoa ejecuto unas consultas simples
pruebas=# select * from delegaciones where padre in (select
id_delegacion from delegaciones where padre = 1);
id_delegacion | nombre | padre
---------------+------------+-------
1 | principal | 1
2 | Barcelona | 1
3 | madrid | 1
4 | gerona | 1
5 | lleida | 1
6 | rubi | 2
7 | sant cugat | 2
8 | terrassa | 2
9 | castellana | 3
10 | lavapies | 3
(10 filas)
Duración: 0,474 ms
pruebas=# select * from delegaciones where padre in (select
id_delegacion from delegaciones where padre = 2);
id_delegacion | nombre | padre
---------------+---------------+-------
11 | ximelis | 6
12 | can serrafosa | 6
(2 filas)
Duración: 0,477 ms
pruebas=#
Y aqui está el problema, cuando el padre es 3 no encuentra nada
pruebas=# select * from delegaciones where padre in (select
id_delegacion from delegaciones where padre = 3);
id_delegacion | nombre | padre
---------------+--------+-------
(0 filas)
Duración: 0,462 ms
Sin embargo si ejecuto solo la parte final de la consulta si que lo encuentra:
pruebas=# select id_delegacion from delegaciones where padre = 3;
id_delegacion
---------------
9
10
(2 filas)
Duración: 0,325 ms
La verdad es que no tengo idea de por que de este comportamiento,
llevo un rato peleando y no lo veo.
From | Date | Subject | |
---|---|---|---|
Next Message | Mario | 2007-02-28 12:22:46 | Re: Problema con consulta simple |
Previous Message | Sergio | 2007-02-28 11:23:45 | Problema con consulta simple |