2010-06-30 3 views
0

Вот что у меня есть:Как я могу показать имя с использованием идентификатора в качестве внешнего ключа?

У меня есть таблица под названием Area, которая является самореляционной. Если столбец ParentAreaID равен null, это означает, что это родительская область. Если у него есть значение, это означает, что у него есть родители.

alt text

Как я могу показать таблицу с ID, именем и (родители с использованием собственной ссылочной ID)?

+0

возможно дубликат [Как я могу создать простой Выберите для таблицы самостоятельно ссылочной] (http://stackoverflow.com/questions/3151576/how -может-я создать мини-простой выбор-в-а-самосправочные-таблицы) –

ответ

0

Вы хотите использовать подключения по: 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;