InformatikAzubi
Neuer Benutzer
- Beiträge
- 1
huhu Zusammen,
ich hab in der Schule die Aufgabe bekommen ein Navi zu basteln. Die Daten für die einzelnen Strecken habe ich in einer Datenbank abgelegt. Eine UDF soll die einzelnen Strecken, die zum Ziel führen, ausgeben. Ich muss ja alle möglichen Streckenkombinationen berechnen. Und mein Problem ist das Durchlaufen aller möglichen Fahrrouten. Wie durchlaufe ich alle möglichen Routen?
Ich möchte nicht, dass ihr mir den Quellcode schreibt. Vielleicht wisst ihr eine Lösung wie ich zum Ziel komme.
Hier inforamtionen zu meiner Grundidee:
Also meine Streckeninformationen stehen in einer Tabelle namens "Strecken". Diese ist folgendermaßen aufgebaut:
Strecken_ID INT --um jede Strecke eindeutig zu identifizieren
Strecken_Start_ID INT --ID der Startstadt
Strecken_Ziel_ID INT --ID der Zielstadt
Strecken_Distanz INT --Länge der Strecke in Km
Strecken_Typ INT -- 0 = Autobahn, 1 = Feldwege
Strecken_Geschwindigkeit INT --Geschwindigkeit, die man auf der Strecke fahren darf
Meine angefangede UDF sieht folgendermaßen aus:
Vielen Dank im voraus
InformatikAzubi
ich hab in der Schule die Aufgabe bekommen ein Navi zu basteln. Die Daten für die einzelnen Strecken habe ich in einer Datenbank abgelegt. Eine UDF soll die einzelnen Strecken, die zum Ziel führen, ausgeben. Ich muss ja alle möglichen Streckenkombinationen berechnen. Und mein Problem ist das Durchlaufen aller möglichen Fahrrouten. Wie durchlaufe ich alle möglichen Routen?
Ich möchte nicht, dass ihr mir den Quellcode schreibt. Vielleicht wisst ihr eine Lösung wie ich zum Ziel komme.
Hier inforamtionen zu meiner Grundidee:
Also meine Streckeninformationen stehen in einer Tabelle namens "Strecken". Diese ist folgendermaßen aufgebaut:
Strecken_ID INT --um jede Strecke eindeutig zu identifizieren
Strecken_Start_ID INT --ID der Startstadt
Strecken_Ziel_ID INT --ID der Zielstadt
Strecken_Distanz INT --Länge der Strecke in Km
Strecken_Typ INT -- 0 = Autobahn, 1 = Feldwege
Strecken_Geschwindigkeit INT --Geschwindigkeit, die man auf der Strecke fahren darf
Meine angefangede UDF sieht folgendermaßen aus:
Code:
CREATE PROCEDURE [dbo].[GET_WAY](
@StartID INT,
@ZielID INT,
@WegArt INT
)
returns @RET TABLE(
TourID INT,
StartID INT,
ZielID INT,
Distanz INT,
Geschwindigkeit INT)
/*
@description Berechnet die gewünschte Route
param @StartID ID des Startknoten
param @ZielID ID des Zielknoten
param @WegArt 0 = schnellste Route, 1 = kürzeste Route
Information zur TourID: Diese ID kann mehreren Strecken zugeordnet werden. Alle Strecken, die die selbe TourID haben, führen zum gewünschten Ziel.
sample exec GET_WAY 1,2,0
created 26.11.2011 Mein_Name (zensiert)
*/
AS
BEGIN
--In diesen 2 ZwischenVariablen werden ID, der Orte gesperichert, wo ich schonmal war, damit ich nicht im Kreis fahre
DECLARE @ZwischenStartID INT,
@ZwischenZielID INT,
@TourID
--ermitteln des Start- und Ziel-Orts
SET @ZwischenStartID = @STARTID
SET @ZwischenZielID = @ZIELID
SET @TOURID = 1
--*******************************************************************************
--Hier muss die Tabelle @RET mit allen möglichen Streckenkombinationen,
--die zum Ziel führen gefüllt werden. Das schaffe ich aber nicht
--*******************************************************************************
--Auswertung der Schnellsten oder der kürzesten Route
Declare DECLARE @BEST_TOUR_ID INT
IF ( @WegArt = 0 )--0 = schnellste Route, 1 = kürzeste Route
BEGIN
SET @BEST_TOUR_ID = (SELECT tourid,
MIN(SUM(Geschwindigkeit))
FROM @RET
GROUP BY TourId)
END
ELSE
SET @BEST_TOUR_ID = (SELECT tourid,
MIN(SUM(Distanz))
FROM @RET
GROUP BY TourId)
--Alle zu langen Strecken werden gelöscht, so dass nur 1 Tour ausgegeben wird
DELETE FROM @RET where TourId <> @BEST_TOUR_ID
RETURN
END
Vielen Dank im voraus
InformatikAzubi