Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Select con relaciones recursivas (https://www.clubdelphi.com/foros/showthread.php?t=6727)

tica 20-01-2004 16:25:50

Select con relaciones recursivas
 
Hola

Bueno tengo una tabla la cual tiene relacion a si misma mas o menos con esta estructura.

Nombre de la tabla:prueba
Campos:codigo, nombre fk_prueba
fk_prueba es llave foranea de la misma tabla

Algunos de los datos son los siguiente:

codigo | descrip | fk_prueba
-------+-------------+------------
1 | PADRE1 |
1.1 | HIJO1 | 1
1.2 | HIJO2 | 1
1.2.1 | NIETO1 | 1.2
1.2.2 | NIETO2 | 1.2
2 | PADRE2 |
2.1 | HIJOa | 2
2.2 | HIJOb | 2
(8 rows)


Necesito listar todos aquellos registros que no se encuentran como llave foranea. Intente esta consulta

select * from prueba where codigo not in (select distinct fk_prueba from prueba);

Sin embargo me retorna 0 (cero registros). Cambie la consulta por:

select * from prueba where codigo in (select distinct fk_prueba from prueba);

Esta consulta devuelve lo que creia correcto:

codigo | descrip | fk_prueba
-------+-------------+------------
1 | PADRE1 |
1.2 | HIJO2 | 1
2 | PADRE2 |
(3 rows)


Intente otras maneras y no me funcionan :(

Alguna idea????

__cadetill 20-01-2004 17:33:59

como no se el motor que utilizas ni el valor por defecto de la columna fk_prueba...

Código:

select *
from prueba
where fk_prueba is null


Gydba 22-01-2004 01:02:58

Perdón que me meta, pero ¿vos querés devolver todos los registros dependientes con jerarquía?

Si no es así pido perdón, tendría que dormir un poco más ... pero con estos días de calor en Arg. difícil :)

jachguate 22-01-2004 21:59:45

Vos queres todos los registros que no tengan hijos.. cierto.

Código:

Select *
  from tabla
 where not exists (select 1
                          from tabla hijo
                        where hijo.campo_fk = tabla.campo_primario);

debiera funcionar...

Hasta luego.

;)

Gydba 23-01-2004 01:41:18

O no, los registros tienen hijos!!!
Con razón mis tablas crecen tanto día a día, han estado ocuapadas :)

Es broma, se que no tiene nada que ver con el post ni que ayuda en lo mas mínimo, pero una vida sin un toque de humor se vuelve demasiada amarga.

Perdón, perdón, a veces no lo puedo evitar.

tica 23-01-2004 14:03:33

Hola,

Cierto necesitaba listar todos los hijos, y ahora si se pudo :D gracias por la ayuda


La franja horaria es GMT +2. Ahora son las 04:16:39.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi