Zoo tutorials: [ SQL | SQL (Hong Kong) | Linux | Java | XML ]
Ggw. verwendetes DBMS:

Eine Einführung in

SQL

Self Joins

stops (id, name)
route (num, company, pos, stop)

Details zur Buslinien-Datenbank.

1a Wieviele Haltestellen (stops) gibt es in der Datenbank?


1b Ermittle die id für die Haltestelle 'Craiglockhart'.


1c Zeige die id und den Namen der Haltestellen der 'LRT'-Linie '4'.


Routen und Haltestellen

2a Die Abfrage zeigt die Nummern der Routen, die entweder über London Road (149) oder Craiglockhart (53) gehen. Führe die Abfrage aus und notiere die Linien, die zweimal (COUNT = 2) diese Haltestellen kreuzen.

Füge eine HAVING-Klausel hinzu, um die Ausgabe auf diese zwei Routen zu beschränken.


2b Führe den rechts stehenden Self Join aus. Du kannst erkennen, daß b.stop alle Stationen enthält, die von Craiglockhart aus erreichbar sind.

Ändere die Abfrage so ab, daß es die Linien von Craiglockhart nach London Road zeigt.


2c Die Abfrage ist ähnlich der Vorigen. Durch einen Join der Haltestellen-Tabelle mit einer (virtuellen) Kopie von sich selbst können wir uns auf die Haltestellennamen anstelle der Nummern beziehen.

Ändere die Abfrage, so daß die Linien zwischen 'Craiglockhart' und 'London Road' gezeigt werden. Alternativ können auch die Stationen zwischen 'Fairmilehead' und 'Tollcross' angezeigt werden.


Hinweise zum Anwenden von Self Joins.

3a Ermittle alle Buslinien, die die Haltestellen 115 und 137 ('Haymarket' und 'Leith') verbinden.


3b Finde die Linien, die die Haltestellen 'Craiglockhart' und 'Tollcross' verbinden.


3c Ermittle die Haltestellen, die von 'Craiglockhart' ohne Umsteigen erreicht werden können. Es interessieren auch die Details der entsprechenden Linie(n).


3d Zeige, wie man von 'Sighthill' nach 'Craiglockhart' kommt.