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'; #-- Zurückbenennen der Universität für späteren Code UPDATE Station SET Name= 'Universität' WHERE Name= 'Umbenanntiversität'; #--Aufgabe 7) #-- Zwischenoperationen #-- Mögliche Verbindungen CREATE VIEW VerbindungenA7 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 = 'Rathaus' /* [Start-Station] */ AND Ende.Station = 'Universität' /* [Ziel-Station] */); #-- Zeiten der Verbindungen CREATE VIEW Potentielle_ZeitenA7 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 (VerbindungenA7 AS 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) ORDER BY Start_Minute; # Anfrage für Aufgabe 7 SELECT * FROM Potentielle_ZeitenA7 WHERE (Ziel_Minute - Start_Minute+1) IN ( SELECT MIN(Ziel_Minute - Start_Minute) FROM Potentielle_ZeitenA7 WHERE Ziel_Minute - Start_Minute >= Stationen) OR (Ziel_Minute - Start_Minute) IN ( SELECT MIN(Ziel_Minute - Start_Minute) FROM Potentielle_ZeitenA7 WHERE Ziel_Minute - Start_Minute >= Stationen)OR (Ziel_Minute - Start_Minute-1) IN ( SELECT MIN(Ziel_Minute - Start_Minute) FROM Potentielle_ZeitenA7 WHERE Ziel_Minute - Start_Minute >= Stationen) AND Start_Minute> 5 /* [Bereit-Minute] */; #Aufgabe 8 #-- Zwischenoperationen #-- Mögliche Verbindungen für Linie A CREATE VIEW VerbindungenA8_LinieA 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 = 'Landgericht' /* [Start-Station] */ AND Ende.Station = 'Rathaus' /* [Mitte-Station] */); #-- Zeiten der Verbindungen für Linie A CREATE VIEW Potentielle_ZeitenA8_LinieA 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 (VerbindungenA8_LinieA AS 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) ORDER BY Start_Minute; # Zeiten richten für Linie A CREATE VIEW ZeitenA8_LinieA AS SELECT * FROM Potentielle_ZeitenA8_LinieA WHERE (Ziel_Minute - Start_Minute+1) IN ( SELECT MIN(Ziel_Minute - Start_Minute) FROM Potentielle_ZeitenA8_LinieA WHERE Ziel_Minute - Start_Minute >= Stationen) OR (Ziel_Minute - Start_Minute) IN ( SELECT MIN(Ziel_Minute - Start_Minute) FROM Potentielle_ZeitenA8_LinieA WHERE Ziel_Minute - Start_Minute >= Stationen)OR (Ziel_Minute - Start_Minute-1) IN ( SELECT MIN(Ziel_Minute - Start_Minute) FROM Potentielle_ZeitenA8_LinieA WHERE Ziel_Minute - Start_Minute >= Stationen); #-- Mögliche Verbindungen für Linie B CREATE VIEW VerbindungenA8_LinieB 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 = 'Rathaus' /* [Mitte-Station] */ AND Ende.Station = 'Universität' /* [End-Station] */); #-- Zeiten der Verbindungen für Linie B CREATE VIEW Potentielle_ZeitenA8_LinieB 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 (VerbindungenA8_LinieB AS 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) ORDER BY Start_Minute; # Zeiten richten für Linie B CREATE VIEW ZeitenA8_LinieB AS SELECT * FROM Potentielle_ZeitenA8_LinieB WHERE (Ziel_Minute - Start_Minute+1) IN ( SELECT MIN(Ziel_Minute - Start_Minute) FROM Potentielle_ZeitenA8_LinieB WHERE Ziel_Minute - Start_Minute >= Stationen) OR (Ziel_Minute - Start_Minute) IN ( SELECT MIN(Ziel_Minute - Start_Minute) FROM Potentielle_ZeitenA8_LinieB WHERE Ziel_Minute - Start_Minute >= Stationen)OR (Ziel_Minute - Start_Minute-1) IN ( SELECT MIN(Ziel_Minute - Start_Minute) FROM Potentielle_ZeitenA8_LinieB WHERE Ziel_Minute - Start_Minute >= Stationen); # Anfrage Für Aufgabe 8 SELECT LinieA.Start_Minute , LinieA.Bahnlinie AS Linie_A, LinieA.Richtung AS Richtung_A, LinieA.Ziel_Station AS Mitte_Station, LinieB.Bahnlinie AS Linie_B, LinieB.Richtung AS Richtung_B, LinieB.Ziel_Minute FROM ZeitenA8_LinieA AS LinieA JOIN ZeitenA8_LinieB AS LinieB ON LinieA.Ziel_Station = LinieB.Start_Station WHERE LinieA.Ziel_Minute < LinieB.Start_Minute AND LinieA.Start_Minute > 1 /*Bereit Minute */;
Stuck with a problem? Got Error? Ask ChatGPT!
Copy Clear