我希望得到您对我想要做的递归查询的帮助。 我在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。 属性'路线'的类型应该是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 2011-03-16 08:31:34