SQLize Online / PHPize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
#-- Aufgabe 3) CREATE TABLE Station ( Name VARCHAR(50) PRIMARY KEY, Barrierefrei BOOLEAN, Unterirdisch BOOLEAN, Fahrradbox BOOLEAN ); CREATE TABLE Linie ( Nummer INTEGER PRIMARY KEY, Farbe TEXT, A_Station VARCHAR(50), Z_Station TEXT NOT NULL, E_Station VARCHAR(50), FOREIGN KEY(A_Station) REFERENCES Station(Name) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY(E_Station) REFERENCES Station(Name) ON DELETE CASCADE ON UPDATE CASCADE ); CREATE TABLE Auskunft ( Linie INTEGER NOT NULL, Richtung VARCHAR(50), Station VARCHAR(50), Minute INTEGER NOT NULL, FOREIGN KEY(Linie) REFERENCES Linie(Nummer) ON DELETE CASCADE ON UPDATE CASCADE, #FOREIGN KEY(Richtung) REFERENCES Station(Name) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY(Station) REFERENCES Station(Name) ON DELETE CASCADE ON UPDATE CASCADE ); CREATE TABLE Fahrplan ( Linie INTEGER NOT NULL REFERENCES Linie, Richtung VARCHAR(50), Station VARCHAR(50), S_Nummer INTEGER NOT NULL, CHECK (S_Nummer >=0 ), FOREIGN KEY(Linie) REFERENCES Linie(Nummer) ON DELETE CASCADE ON UPDATE CASCADE, #FOREIGN KEY(Richtung) REFERENCES Station(Name) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY(Station) REFERENCES Station(Name) ON DELETE CASCADE ON UPDATE CASCADE ); #--Test Inserts INSERT INTO Station VALUES ('Universität', true, false, false); INSERT INTO Station VALUES ('Lohmannshof', true, true, true); INSERT INTO Station VALUES ('Hauptbahnhof', true, true, true); INSERT INTO Station Values ('Lange Straße', false, false ,false); INSERT INTO Linie VALUES(4,'rot', 'Lohmannshof', '' ,'Universität'); INSERT INTO Linie VALUES(3, 'gelb', 'Lange Straße', '','Hauptbahnhof'); INSERT INTO Fahrplan VALUES (4 , 'Lohmannshof', 'Lohmannshof', 3 ); INSERT INTO Fahrplan VALUES (4 , 'Lohmannshof', 'Universität', 1 ); INSERT INTO Fahrplan VALUES (4 , 'Universität', 'Lohmannshof', 1 ); INSERT INTO Fahrplan VALUES (4 , 'Lohmannshof', 'Hauptbahnhof', 1 ); INSERT INTO Auskunft Values (4 , 'Lohmannshof', 'Hauptbahnhof', 5); INSERT INTO Auskunft Values (4 , 'Lohmannshof', 'Hauptbahnhof', 20); INSERT INTO Fahrplan VALUES (4 , 'Lohmannshof', 'Lohmannshof', 7 ); INSERT INTO Auskunft Values (4 , 'Lohmannshof', 'Lohmannshof', 30); INSERT INTO Auskunft Values (4 , 'Lohmannshof', 'Lohmannshof', 45); INSERT INTO Fahrplan VALUES (4 , 'Hauptbahnhof', 'Lohmannshof', 1 ); INSERT INTO Auskunft Values (4 , 'Hauptbahnhof', 'Lohmannshof', 6); INSERT INTO Auskunft Values (4 , 'Hauptbahnhof', 'Lohmannshof', 21); INSERT INTO Fahrplan VALUES (4 , 'Hauptbahnhof' , 'Hauptbahnhof' , 7 ); INSERT INTO Auskunft Values (4 , 'Hauptbahnhof', 'Hauptbahnhof', 13); INSERT INTO Auskunft Values (4 , 'Hauptbahnhof', 'Hauptbahnhof', 28); INSERT INTO Fahrplan VALUES (3 , 'Hauptbahnhof', 'Lange Straße', 1 ); INSERT INTO Fahrplan VALUES (3 , 'Lange Straße','Hauptbahnhof', 1 ); SELECT * FROM Station; SELECT * FROM Fahrplan; #-- Aufgabe 6 a) UPDATE Station SET Name= 'Umbenanntiversität' WHERE Name= 'Universität'; SELECT * FROM Station; SELECT * FROM Fahrplan; #-- Aufgabe 6 b) SELECT DISTINCT Station AS 'Stationen der Linie 4' FROM Fahrplan WHERE Linie=4; #-- Aufgabe 6 c) SELECT COUNT(DISTINCT Name) AS 'Stationen ohne Fahrradbox' FROM Station WHERE Fahrradbox = false ; #--Aufgabe 6 d) SELECT Farbe AS 'Farben aller vollkommen barrierefreien Linien' FROM Linie WHERE Nummer NOT IN ( SELECT DISTINCT Linie FROM Station INNER JOIN Fahrplan ON Station.Name = Fahrplan.Station WHERE Barrierefrei = false); #-- Aufgabe 6 e) SELECT COUNT(DISTINCT Linie) AS 'Summe haltender Linien', Station FROM Fahrplan WHERE Station IN( SELECT Name FROM Station WHERE Unterirdisch = true) GROUP BY Station ORDER BY 'Summe haltender Linien'; #--Aufgabe 7) #-- Zwischenoperationen #-- Mögliche Verbindungen CREATE VIEW Verbindungen AS SELECT Anfang.Station AS Start_Station, Anfang.Linie AS BahnLinie, Anfang.Richtung, Ende.Station AS Ziel_Station, Ende.S_Nummer-Anfang.S_Nummer AS Stationen FROM Fahrplan Anfang, Fahrplan Ende WHERE (Anfang.Linie = Ende.Linie AND Anfang.Richtung = Ende.Richtung AND Anfang.S_Nummer <= Ende.S_Nummer AND Anfang.Station = 'Lohmannshof' AND Ende.Station = 'Hauptbahnhof'); #-- Zeiten der Verbindungen CREATE VIEW Potentielle_Zeiten AS SELECT Verbindungen.Start_Station , Start_Auskunft.Minute AS Start_Minute, Verbindungen.BahnLinie, Verbindungen.Richtung, Verbindungen.Ziel_Station, Ziel_Auskunft.Minute AS Ziel_Minute, Verbindungen.Stationen FROM (Verbindungen JOIN Auskunft AS Start_Auskunft ON ( Verbindungen.Start_Station = Start_Auskunft.Station AND Verbindungen.BahnLinie = Start_Auskunft.Linie AND Verbindungen.Richtung = Start_Auskunft.Richtung)) JOIN Auskunft AS Ziel_Auskunft ON ( Verbindungen.Ziel_Station = Ziel_Auskunft.Station AND Verbindungen.BahnLinie = Ziel_Auskunft.Linie AND Verbindungen.Richtung = Ziel_Auskunft.Richtung) WHERE Start_Auskunft.Minute > 12 ORDER BY Start_Minute; SELECT * FROM Potentielle_Zeiten WHERE (Ziel_Minute - Start_Minute+1) IN ( SELECT MIN(Ziel_Minute - Start_Minute) FROM Potentielle_Zeiten WHERE Ziel_Minute - Start_Minute >= Stationen) OR (Ziel_Minute - Start_Minute) IN ( SELECT MIN(Ziel_Minute - Start_Minute) FROM Potentielle_Zeiten WHERE Ziel_Minute - Start_Minute >= Stationen)OR (Ziel_Minute - Start_Minute-1) IN ( SELECT MIN(Ziel_Minute - Start_Minute) FROM Potentielle_Zeiten WHERE Ziel_Minute - Start_Minute >= Stationen); CREATE PROCEDURE Test AS SELECT * FROM Auskunft GO;
Stuck with a problem? Got Error? Ask ChatGPT!
Copy Clear