TB16 182 – Fd. Medlem
Postad: 26 aug 2019 20:04

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? 

Laguna Online 30499
Postad: 26 aug 2019 22:11

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.

TB16 182 – Fd. Medlem
Postad: 28 aug 2019 14:04
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;

Laguna Online 30499
Postad: 28 aug 2019 16:26
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.

Svara
Close