2010-06-30 2 views
0

Voici ce que j'ai:Comment puis-je afficher un nom en utilisant l'ID comme clé étrangère?

J'ai une table appelée Zone qui est auto-référentielle. Si la colonne ParentAreaID est nulle, cela signifie que c'est une zone parente. S'il a une valeur, cela signifie qu'il a des parents.

alt text

Comment puis-je afficher une table avec ID, le nom et (des parents à l'aide de l'ID auto référentiel)?

+0

double possible de [? Comment puis-je créer un simple Select pour une table d'auto-référentiel] (http://stackoverflow.com/questions/3151576/how -can-i-create-a-simple-select-for-a-auto-référential-table) –

Répondre

0

Vous souhaitez utiliser la connexion par: http://psoug.org/reference/connectby.html

create table sample (id number, parentid number, name varchar2(50)); 

insert into sample values(1,null,'aaa'); 
insert into sample values(2,NULL,'bbb'); 
insert into sample values(3,NULL,'ccc'); 
insert into sample values(4,null,'ddd'); 

insert into sample values(5,1,'aaa1'); 
insert into sample values(6,2,'bbb2'); 
insert into sample values(7,3,'ccc3'); 
insert into sample values(8,4,'ddd4'); 

insert into sample values(9,5,'aaa11'); 
insert into sample values(10,6,'bbb22'); 
insert into sample values(11,7,'ccc33'); 
insert into sample values(12,8,'ddd44'); 

SELECT ID,PARENTID, NAME, CONNECT_BY_ROOT NAME PARENTNAME, 
SYS_CONNECT_BY_PATH(name, '/') 
    FROM SAMPLE 
    start with parentid is null 
CONNECT BY PRIOR ID = PARENTID 
order siblings by id; 
Questions connexes