Skip site navigation (1) Skip section navigation (2)

Problema con consulta simple

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 (view raw or flat)
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.

Responses

pgsql-es-ayuda by date

Next:From: MarioDate: 2007-02-28 12:22:46
Subject: Re: Problema con consulta simple
Previous:From: SergioDate: 2007-02-28 11:23:45
Subject: Problema con consulta simple

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group