Übung 2: SQL-Abfragen über mehrere Tabellen

Aus ComeniusWiki

Schema:

BAND [ BandNr : INT ; Name : VARCHAR(100) ; Stil : VARCHAR(100) ]
PERSON [ AusweisNr : INT ; Name : VARCHAR(100) ; GebDat : DATE ; Rolle : VARCHAR(50) ]
INSTRUMENT [ Name : VARCHAR(100) ; Baujahr : INT ]
CD [ CDNr : INT ; Titel : VARCHAR(100) ; Erscheinungsjahr : INT ; Album? : BOOLEAN ; BandNr : INT ]
ist_mitglied_von [ AusweisNr : INT ; BandNr : INT]
spielt [ AusweisNr : INT ; Name : VARCHAR(100) ]

Vereinfachtes Klassendiagramm:

Formuliere für nachfolgende Aufgaben die zugehörige SQL-Abfrage!

Aufgabe 1:
Gib eine Übersicht aus, welche Person (Name) welche(s) Instrument(e) spielt! <popup name="Lösung">

SELECT P.Name, S.Name
FROM PERSON AS P, spielt AS S
WHERE P.AusweisNr = S.AusweisNr

</popup>

Aufgabe 2:
Wie lauten die Titel der CDs, die die Band "Kings of Leon" veröffentlicht hat? <popup name="Lösung">

SELECT C.Titel
FROM BAND AS B, CD AS C
WHERE B.Name = "Kings of Leon" 
AND B.BandNr = C.BandNr

</popup>

Aufgabe 3:
Wie lautet der Name der Band, bei der "Caleb Followill" Mitglied ist? <popup name="Lösung">

SELECT B.Name
FROM BAND AS B, PERSON AS P, ist_mitglied_von AS IMV
WHERE P.Name = "Caleb Followill"
AND B.BandNr = IMV.BandNr 
AND P.AusweisNr = IMV.AusweisNr

</popup>

Aufgabe 3:
Wie lauten die Titel der CDs, die die Band "Foo Fighters" seit dem Jahr 2012 veröffentlicht haben? <popup name="Lösung">

SELECT C.Titel
FROM BAND AS B, CD AS C
WHERE B.Name = "Foo Fighters" 
AND B.BandNr = C.BandNr
AND C.Erscheinungsjahr >= 2012

</popup>