Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-01-2004
tica tica is offline
Miembro
 
Registrado: oct 2003
Posts: 15
Poder: 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
  #2  
Antiguo 20-01-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 22-01-2004
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
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 :.
Responder Con Cita
  #4  
Antiguo 22-01-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 23-01-2004
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
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 :.
Responder Con Cita
  #6  
Antiguo 23-01-2004
tica tica is offline
Miembro
 
Registrado: oct 2003
Posts: 15
Poder: 0
tica Va por buen camino
Hola,

Cierto necesitaba listar todos los hijos, y ahora si se pudo gracias por la ayuda
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 21:22:05.


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
Copyright 1996-2007 Club Delphi