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

Re: Problema con consulta simple

From: Oswaldo Hernández <listas(at)soft-com(dot)es>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Problema con consulta simple
Date: 2007-02-28 12:40:39
Message-ID: 45E57847.6040608@soft-com.es (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Sergio escribió:

> 
> 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
> 
> 
> 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 consulta que haces busca las delegaciones cuyo padre a su vez esta asignado al padre nº 3, es 
decir, avanza 2 niveles en el arbol.

En este caso del id = 3 solo hay una descendencia (no hay delegaciones asignadas a la 9 y 10)


Saludos,
-- 
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************

In response to

Responses

pgsql-es-ayuda by date

Next:From: José Ruiz aguileraDate: 2007-02-28 12:44:31
Subject: Re: Conectar con una BD en SQL SERVER
Previous:From: MarioDate: 2007-02-28 12:22:46
Subject: Re: Problema con consulta simple

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