SQL queries
Uppgift:
Assume tables with the following schemas for public transport:
Stops (name, location)
Lines (number, vehicle)
StopsOnLines (line, stop, timeFromStart)
line -> Lines(number)
stop -> Stops(name)
(primary key information left out as irrelevant here).The StopsOnLines table lists stops along each line, each with the total time it takes to reach them from the start of the line. For instance: "line 13 takes 5 minutes to Chalmers", "line 13 takes 21 minutes to Central Station". Your task is to write some SQL queries for such questions.
Mitt försök att lösa uppgiften:
SELECT number, vehicle FROM Stops a, Lines b
WHERE a.name = ‘Chalmers’;
Svaret till uppgiften:
SELECT line, vehicle
FROM StopsOnLines, Lines
WHERE stop = 'Chalmers' AND line = Lines.number
Är båda lösningarna ekvivalenta?
Har du provat båda lösningarna i någon SQL-databas?
Jag tycker att ingen av dem har med tiden, men jag kanske missar något.
Laguna skrev:Har du provat båda lösningarna i någon SQL-databas?
Har du något förslag på ett smidigt sätt att testa båda lösningarna? Jag använder DBeaver, men jag tycker inte det är så smidigt (Kan vara pga att jag inte kan programmet tillräckligt...)
/.../Jag tycker att ingen av dem har med tiden, men jag kanske missar något.
Just det ja. Skulle detta funka:
SELECT number, vehicle, timeFromStart FROM Stops a, Lines b, StopsOnLines c
WHERE a.name = ‘Chalmers’ AND c.timeFromStart > 0;
TB16 skrev:Laguna skrev:Har du provat båda lösningarna i någon SQL-databas?
Har du något förslag på ett smidigt sätt att testa båda lösningarna? Jag använder DBeaver, men jag tycker inte det är så smidigt (Kan vara pga att jag inte kan programmet tillräckligt...)
Det finns en enkel SQL-databas som heter sqlite, för Linux. Annars har jag använt MySQL, men inget annat.