Übung 2: SQL-Abfragen über mehrere Tabellen: Unterschied zwischen den Versionen

Aus ComeniusWiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(13 dazwischenliegende Versionen desselben Benutzers 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>
INSTRUMENT [ <span style="text-decoration: underline;">Name</span> : 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: underline;">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>
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;">Name</span> : VARCHAR(100) ]  
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, S.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 48: Zeile 49:
</popup>
</popup>


<u>Aufgabe 3:</u><br>
<u>Aufgabe 4:</u><br>
Wie lauten die Titel der CDs, die die Band "Foo Fighters" seit dem Jahr 2012 veröffentlicht haben?  
Wie lauten die Titel der CDs, die die Band "Foo Fighters" seit dem Jahr 2012 veröffentlicht hat?  
<popup name="Lösung">
<popup name="Lösung">
<syntaxhighlight lang="sql">
<syntaxhighlight lang="sql">
Zeile 57: Zeile 58:
AND B.BandNr = C.BandNr
AND B.BandNr = C.BandNr
AND C.Erscheinungsjahr >= 2012
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">
<syntaxhighlight lang="sql">
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
</syntaxhighlight>
</syntaxhighlight>
</popup>
</popup>

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>