내가하고 싶은 재귀 쿼리에 대한 도움을 받고 싶습니다. 나는 DB2에서이 테이블을 생성 :재귀 쿼리
connect reset; connect to sample; DROP TABLE FLIGHTS; CREATE TABLE FLIGHTS (START VARCHAR(16) NOT NULL, DESTINATION VARCHAR(16) NOT NULL, DISTANCE BIGINT NOT NULL ); insert into FLIGHTS values ('Dublin','Bhogrol',5340); insert into FLIGHTS values ('Dublin','Smallville',5500); insert into FLIGHTS values ('Smallville','Seattle',1300); insert into FLIGHTS values ('Smallville','Clacton',6700); insert into FLIGHTS values ('Bhogrol','Moscow',2320); insert into FLIGHTS values ('Moscow','Seattle',3600); insert into FLIGHTS values ('Bhogrol','Smallville',2950); insert into FLIGHTS values ('Rome','Bhogrol',720); insert into FLIGHTS values ('Clacton','Moscow',6700); insert into FLIGHTS values ('Rome','Smallville',3050); insert into FLIGHTS values ('Schippol','Smallville',8990); insert into FLIGHTS values ('Seattle','Schippol',7840); insert into FLIGHTS values ('Bhogrol','Clacton',1300); insert into FLIGHTS values ('Bilbao','Moscow',1270); insert into FLIGHTS values ('Smallville','Schippol',8990);
내가 8 개 미만의 정지와 함께 더블린에서 모든 연결 항공편을 찾고 싶어요. 쿼리의 출력은 다음과 같은 3 필드 형식의 행 집합이어야합니다. [route, distance, stops] 여기서 경로 필드는 더블린에서 연결된 각 경로에서 방문한 공항에서 만들어진 문자열입니다. '-'문자로 구분 된 공항 이름 시퀀스 입니다. 그러나 전체 공항 이름 대신 첫 문자를 세 문자로 표시하여 각 문자열이 처럼 보이도록하십시오. 예를 들어, Dub> Sch> Dub> Sma> Sch> Dub> Sma> Cla> Mos. 'route'속성의 유형은 VARCHAR (40)이어야합니다.
나는 이런 식으로 시작 생각 :
WITH path (start, destination, distance, stops) AS( SELECT f.start, f.destination, f.distance, 0 FROM flights f WHERE start = 'Dublin' UNION ALL SELECT p.start, f.destination, p.distance + f.distance, p.stops+1 FROM flights f, path p WHERE p.destination = f.start AND p.stops < 8 ) SELECT start, destination, distance, stops FROM path;
그것은 올바른 그렇다면, 내가 다음 무엇을 할 수?
은 내가 출력에 대해 무엇을 할 수 있습니다. 새 테이블을 만들어야합니까? – dali1985