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???? |
como no se el motor que utilizas ni el valor por defecto de la columna fk_prueba...
Código:
select * |
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 :) |
Vos queres todos los registros que no tengan hijos.. cierto.
Código:
Select * Hasta luego. ;) |
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. |
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