Erste Seite Zurück Weiter Letzte Seite Übersicht Grafik
Rekursive Abfragen
Welche Städte sind von VIE (Wien Schwechat) aus mit drei Flügen zu erreichen?
Notizen:
Lösbar in T-SQL durch „rekursive Funktion“:
ALTER FUNCTION rek
(@von VARCHAR (50),
@hops TINYINT )
RETURNS @rek TABLE (nach varchar(50))
BEGIN
IF @hops = 0
BEGIN
INSERT INTO @rek (nach)
values (@von)
RETURN
END
ELSE
BEGIN
SET @hops = @hops - 1
IF @hops = 0
INSERT INTO @rek
SELECT nach
FROM flug
WHERE von = @von
ELSE
INSERT INTO @rek
SELECT nach
FROM flug
WHERE von IN (
SELECT nach
FROM dbo.rek ( @von , @hops )
) ;
END
RETURN ;
END
Aufruf:
SELECT * FROM dbo.rek('wien', 3) ;