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????