Übung 2: SQL-Abfragen über mehrere Tabellen: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| (5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 3: | Zeile 3: | ||
<code>BAND [ <span style="text-decoration: underline;">BandNr</span> : INT ; Name : VARCHAR(100) ; Stil : VARCHAR(100) ; Gründungsjahr : INT ]<br> | <code>BAND [ <span style="text-decoration: underline;">BandNr</span> : INT ; Name : VARCHAR(100) ; Stil : VARCHAR(100) ; Gründungsjahr : INT ]<br> | ||
PERSON [ <span style="text-decoration: underline;">AusweisNr</span> : INT ; Name : VARCHAR(100) ; GebDat : DATE ; Rolle : VARCHAR(50) ]<br> | PERSON [ <span style="text-decoration: underline;">AusweisNr</span> : INT ; Name : VARCHAR(100) ; GebDat : DATE ; Rolle : VARCHAR(50) ]<br> | ||
INSTRUMENT [ <span style="text-decoration: underline;">INr</span> : INT ; Art: VARCHAR(100) ; Baujahr : INT ]<br> | INSTRUMENT [ <span style="text-decoration: underline;">INr</span> : INT ; Art : VARCHAR(100) ; Baujahr : INT ]<br> | ||
CD [ <span style="text-decoration: underline;">CDNr</span> : INT ; Titel : VARCHAR(100) ; Erscheinungsjahr : INT ; Album? : BOOLEAN ; <span style="text-decoration: | CD [ <span style="text-decoration: underline;">CDNr</span> : INT ; Titel : VARCHAR(100) ; Erscheinungsjahr : INT ; Album? : BOOLEAN ; <span style="text-decoration: overline;">BandNr</span> : INT ]<br> | ||
ist_mitglied_von [ <span style="text-decoration: underline overline;">AusweisNr</span> : INT ; <span style="text-decoration: underline overline;">BandNr</span> : INT ] <br> | ist_mitglied_von [ <span style="text-decoration: underline overline;">AusweisNr</span> : INT ; <span style="text-decoration: underline overline;">BandNr</span> : INT ] <br> | ||
spielt [ <span style="text-decoration: underline overline;">AusweisNr</span> : INT ; <span style="text-decoration: underline overline;"> | spielt [ <span style="text-decoration: underline overline;">AusweisNr</span> : INT ; <span style="text-decoration: underline overline;">INr</span> : INT ] | ||
</code> | </code> | ||
<br> | <br> | ||
| Zeile 16: | Zeile 16: | ||
<u>Aufgabe 1:</u><br> | <u>Aufgabe 1:</u><br> | ||
Gib eine Übersicht aus, welche Person (Name) welche(s) Instrument(e) spielt! | Gib eine Übersicht aus, welche Person (Name) welche(s) Instrument(e) (Art) spielt! | ||
<popup name="Lösung"> | <popup name="Lösung"> | ||
<syntaxhighlight lang="sql"> | <syntaxhighlight lang="sql"> | ||
SELECT P.Name, | SELECT P.Name, I.Art | ||
FROM PERSON AS P, spielt AS S | FROM PERSON AS P, spielt AS S, INSTRUMENT AS I | ||
WHERE P.AusweisNr = S.AusweisNr | WHERE P.AusweisNr = S.AusweisNr | ||
AND S.INr = I.INr | |||
</syntaxhighlight> | </syntaxhighlight> | ||
</popup> | </popup> | ||
| Zeile 82: | Zeile 83: | ||
AND IMV.AusweisNr = P.AusweisNr | AND IMV.AusweisNr = P.AusweisNr | ||
AND P.AusweisNr = S.AusweisNr | AND P.AusweisNr = S.AusweisNr | ||
S.INr = I.INr | |||
</syntaxhighlight> | </syntaxhighlight> | ||
</popup> | </popup> | ||
| Zeile 89: | Zeile 91: | ||
<popup name="Lösung"> | <popup name="Lösung"> | ||
<syntaxhighlight lang="sql"> | <syntaxhighlight lang="sql"> | ||
SELECT | SELECT B.Name | ||
FROM PERSON AS P, BAND AS B, ist_mitglied_von AS IMV | FROM PERSON AS P, BAND AS B, ist_mitglied_von AS IMV | ||
WHERE B.Stil = "Metal" | WHERE B.Stil = "Metal" | ||
Aktuelle Version vom 7. April 2014, 06:30 Uhr
Schema:
BAND [ BandNr : INT ; Name : VARCHAR(100) ; Stil : VARCHAR(100) ; Gründungsjahr : INT ]
PERSON [ AusweisNr : INT ; Name : VARCHAR(100) ; GebDat : DATE ; Rolle : VARCHAR(50) ]
INSTRUMENT [ INr : INT ; Art : 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 ; INr : INT ]
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) (Art) spielt!
<popup name="Lösung">
SELECT P.Name, I.Art
FROM PERSON AS P, spielt AS S, INSTRUMENT AS I
WHERE P.AusweisNr = S.AusweisNr
AND S.INr = I.INr
</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 4:
Wie lauten die Titel der CDs, die die Band "Foo Fighters" seit dem Jahr 2012 veröffentlicht hat?
<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>
Aufgabe 5:
Wer (AusweisNr und Name) ist Mitglied einer "Rock"-Band?
<popup name="Lösung">
SELECT P.AusweisNr, P.Name
FROM PERSON AS P, BAND AS B, ist_mitglied_von AS IMV
WHERE B.Stil = "Rock"
AND B.BandNr = IMV.BandNr
AND IMV.AusweisNr = P.AusweisNr
</popup>
Aufgabe 6:
Welche Instrumente (Name) spielen die Mitglieder der Band "Imagine Dragons"?
<popup name="Lösung">
SELECT I.Name
FROM PERSON AS P, BAND AS B, ist_mitglied_von AS IMV, INSTRUMENT AS I, spielt AS S
WHERE B.Name = "Imagine Dragons"
AND B.BandNr = IMV.BandNr
AND IMV.AusweisNr = P.AusweisNr
AND P.AusweisNr = S.AusweisNr
S.INr = I.INr
</popup>
Aufgabe 7:
Wer (Name) ist Mitglied einer "Metal"-Band, die vor dem Jahr 1990 gegründet wurde?
<popup name="Lösung">
SELECT B.Name
FROM PERSON AS P, BAND AS B, ist_mitglied_von AS IMV
WHERE B.Stil = "Metal"
AND B.Gründungsjahr < 1990
AND B.BandNr = IMV.BandNr
AND IMV.AusweisNr = P.AusweisNr
</popup>
