Как я могу показать имя, используя идентификатор в качестве внешнего ключа? - PullRequest
0 голосов
/ 30 июня 2010

Вот что у меня есть:

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

alt text

Как мне показать таблицу с идентификатором, именем и ИМЯ (родителей, использующих самоссылочный идентификатор))

1 Ответ

0 голосов
/ 30 июня 2010

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