FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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???? |
#2
|
|||
|
|||
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 |
#3
|
|||
|
|||
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
__________________
Suerte .: Gydba :. |
#4
|
||||
|
||||
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); Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#5
|
|||
|
|||
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.
__________________
Suerte .: Gydba :. |
#6
|
|||
|
|||
Hola,
Cierto necesitaba listar todos los hijos, y ahora si se pudo gracias por la ayuda |
|
|
|