Ver Mensaje Individual
  #1  
Antiguo 20-01-2004
tica tica is offline
Miembro
 
Registrado: oct 2003
Posts: 15
Reputación: 0
tica Va por buen camino
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????
Responder Con Cita