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

 
 
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
 



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 09:11:20.


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