데이터베이스 사랑넷 회원님들 안녕하세요.
웹에 트리 테이블 구현을 위해 데이터 베이스를 만드는 중
원하는 형식의 데이터를 추출하기 위한 쿼리문을 알수가 없어 여기 이렇게 질문을 남깁니다.
먼저 테이블 데이터 내용은 아래와 같습니다.
각 데이터는 자신의 ip와 parent 정보를 담고 있고 root 가 되는 데이터의 parent 정보는 NULL 로 되어 있습니다.
이런 상황에서 추출되길 원하는 정보 형식은 아래와 같습니다. 트리 구조를 테이블로 표현했다고 보시면 이해가 되실거라 보입니다.
현재 저는 아래와 같은 쿼리문으로 다음과 같은 결과를 얻는데 까지는 성공했지만 위와 같은 형식의 데이터는 구할 수가 없었습니다.
SELECT t1.name AS lev1, t2.name as lev2, t3.name as lev3 FROM nodelist AS t1 LEFT JOIN nodelist AS t2 ON t2.parent = t1.ip LEFT JOIN nodelist AS t3 ON t3.parent = t2.ip where t1.parent is null;
보시면 아시겠지만 트리에서 루트를 표현하기위한 각 lev1 에 해당하는 독립된 row 가 없고 각 노드의 ip 정보를 표현할 수가 없었습니다.
이와 관련해서 데이터베이스사랑넷 여러분의 도움을 기다립니다.. 그럼..(아래는 테이블 생성 쿼리문입니다.)
create table nodelist(name varchar(20) not null, ip varchar(20) not null,parent varchar(20) default null,type varchar(20) not null);
insert into nodelist values('keymaster1','192.168.10.1',null,'keymaster');
insert into nodelist values('keymaster2','192.168.10.2','192.168.10.1','keymaster');
insert into nodelist values('keymaster3','192.168.10.3','192.168.10.1','keymaster');
insert into nodelist values('keymaster4','192.168.10.4','192.168.10.1','keymaster');
insert into nodelist values('clustermaster1','192.168.10.5',null,'clustermaster');
insert into nodelist values('clusterreserved','cr','192.168.10.5','cr');
insert into nodelist values('clustermaster2','192.168.10.6','cr','clustermaster');
insert into nodelist values('clustermaster3','192.168.10.7','cr','clustermaster');
insert into nodelist values('clustermaster4','192.168.10.8','cr','clustermaster');
insert into nodelist values('groubmaster1','192.168.10.9','192.168.10.5','groubmaster');
insert into nodelist values('groubmaster2','192.168.10.10','192.168.10.5','groubmaster');
insert into nodelist values('groubmaster3','192.168.10.11','192.168.10.5','groubmaster');
insert into nodelist values('groubmaster4','192.168.10.12','192.168.10.5','groubmaster');
insert into nodelist values('keymaster5','192.168.10.13','192.168.10.1','keymaster');
insert into nodelist values('node1','192.168.10.14','192.168.10.9','subnode');
insert into nodelist values('node2','192.168.10.15','192.168.10.9','subnode');
insert into nodelist values('provisioningMaster','192.168.10.16',null,'pmaster');
|