Übung 2: SQL-Abfragen über mehrere Tabellen: Unterschied zwischen den Versionen
(20 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
'''Schema:'''<br> | '''Schema:'''<br> | ||
<br> | <br> | ||
− | <code>BAND [ <span style="text-decoration: underline;">BandNr</span> : INT ; Name : VARCHAR(100) ; Stil : VARCHAR(100) ]<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> | ||
− | CD [ <span style="text-decoration: underline;">CDNr</span> : INT ; Titel : VARCHAR(100) ; Erscheinungsjahr : INT ; Album? : BOOLEAN ; <span style="text-decoration: | + | INSTRUMENT [ <span style="text-decoration: underline;">INr</span> : INT ; Art : VARCHAR(100) ; Baujahr : INT ]<br> |
− | ist_mitglied_von [ <span style="text-decoration: underline overline;">AusweisNr</span> : INT ; <span style="text-decoration: underline overline;">BandNr</span> : INT] <br> | + | 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> | ||
+ | spielt [ <span style="text-decoration: underline overline;">AusweisNr</span> : INT ; <span style="text-decoration: underline overline;">INr</span> : INT ] | ||
</code> | </code> | ||
<br> | <br> | ||
+ | |||
'''Vereinfachtes Klassendiagramm:'''<br> | '''Vereinfachtes Klassendiagramm:'''<br> | ||
− | [[Datei:Klassendiagramm | + | [[Datei:Klassendiagramm Band.png]] |
'''Formuliere für nachfolgende Aufgaben die zugehörige SQL-Abfrage!''' <br> | '''Formuliere für nachfolgende Aufgaben die zugehörige SQL-Abfrage!''' <br> | ||
<u>Aufgabe 1:</u><br> | <u>Aufgabe 1:</u><br> | ||
− | Gib | + | Gib eine Übersicht aus, welche Person (Name) welche(s) Instrument(e) (Art) spielt! |
+ | <popup name="Lösung"> | ||
+ | <syntaxhighlight lang="sql"> | ||
+ | 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 | ||
+ | </syntaxhighlight> | ||
+ | </popup> | ||
+ | |||
+ | <u>Aufgabe 2:</u><br> | ||
+ | Wie lauten die Titel der CDs, die die Band "Kings of Leon" veröffentlicht hat? | ||
+ | <popup name="Lösung"> | ||
+ | <syntaxhighlight lang="sql"> | ||
+ | SELECT C.Titel | ||
+ | FROM BAND AS B, CD AS C | ||
+ | WHERE B.Name = "Kings of Leon" | ||
+ | AND B.BandNr = C.BandNr | ||
+ | </syntaxhighlight> | ||
+ | </popup> | ||
+ | |||
+ | <u>Aufgabe 3:</u><br> | ||
+ | Wie lautet der Name der Band, bei der "Caleb Followill" Mitglied ist? | ||
+ | <popup name="Lösung"> | ||
+ | <syntaxhighlight lang="sql"> | ||
+ | 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 | ||
+ | </syntaxhighlight> | ||
+ | </popup> | ||
+ | |||
+ | <u>Aufgabe 4:</u><br> | ||
+ | Wie lauten die Titel der CDs, die die Band "Foo Fighters" seit dem Jahr 2012 veröffentlicht hat? | ||
+ | <popup name="Lösung"> | ||
+ | <syntaxhighlight lang="sql"> | ||
+ | SELECT C.Titel | ||
+ | FROM BAND AS B, CD AS C | ||
+ | WHERE B.Name = "Foo Fighters" | ||
+ | AND B.BandNr = C.BandNr | ||
+ | AND C.Erscheinungsjahr >= 2012 | ||
+ | </syntaxhighlight> | ||
+ | </popup> | ||
+ | |||
+ | <u>Aufgabe 5:</u><br> | ||
+ | Wer (AusweisNr und Name) ist Mitglied einer "Rock"-Band? | ||
+ | <popup name="Lösung"> | ||
+ | <syntaxhighlight lang="sql"> | ||
+ | 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 | ||
+ | </syntaxhighlight> | ||
+ | </popup> | ||
+ | |||
+ | <u>Aufgabe 6:</u><br> | ||
+ | Welche Instrumente (Name) spielen die Mitglieder der Band "Imagine Dragons"? | ||
+ | <popup name="Lösung"> | ||
+ | <syntaxhighlight lang="sql"> | ||
+ | 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 | ||
+ | </syntaxhighlight> | ||
+ | </popup> | ||
+ | |||
+ | <u>Aufgabe 7:</u><br> | ||
+ | Wer (Name) ist Mitglied einer "Metal"-Band, die vor dem Jahr 1990 gegründet wurde? | ||
<popup name="Lösung"> | <popup name="Lösung"> | ||
<syntaxhighlight lang="sql"> | <syntaxhighlight lang="sql"> | ||
− | SELECT | + | SELECT B.Name |
− | FROM | + | 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 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</popup> | </popup> |
Aktuelle Version vom 7. April 2014, 07: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!
Aufgabe 2:
Wie lauten die Titel der CDs, die die Band "Kings of Leon" veröffentlicht hat?
Aufgabe 3:
Wie lautet der Name der Band, bei der "Caleb Followill" Mitglied ist?
Aufgabe 4:
Wie lauten die Titel der CDs, die die Band "Foo Fighters" seit dem Jahr 2012 veröffentlicht hat?
Aufgabe 5:
Wer (AusweisNr und Name) ist Mitglied einer "Rock"-Band?
Aufgabe 6:
Welche Instrumente (Name) spielen die Mitglieder der Band "Imagine Dragons"?
Aufgabe 7:
Wer (Name) ist Mitglied einer "Metal"-Band, die vor dem Jahr 1990 gegründet wurde?