Habe ich die Abfragen korrekt gelöst?

jonssss

Neuer Benutzer
Beiträge
1
Ich bin relativ neu bei diesem Thema und lerne für meine Klausur. Ich habe einige Übungsaufgaben gemacht. Hab ich diese korrekt gelöst (wahrscheinlich nicht) und was habe ich falsch gemacht? Danke im Vorraus
ER Diagramm
1648145611038.png

Die Aufgabe und meine Lösung dazu
SQL:
--1. Aufgabe
--Erstellen Sie ein SQL-Statement, das alle Interpreten ausgibt, die mit „U“ beginnen
SELECT *
FROM tbl_interpret
WHERE Vorname LIKE 'U%'

--2. Aufgabe
--Erstellen Sie ein SQL-Statement, das alle Musikstücke vom Interpreten „Udo Lindenberg“
--ausgibt
SELECT Titel
FROM tbl_musikstueck
INNER JOIN tbl_mididatei
ON tbl_musikstueck.ID = tbl_mididatei.MusikstueckID
INNER JOIN tbl_interpret_mididatei
ON tbl_mididatei.ID = tbl_interpret_mididatei.MidiDateiID
INNER JOIN tbl_interpret
ON tbl_interpret_mididatei.InterpretID = tbl_interpret.ID
WHERE tbl_interpret.Vorname = 'Udo'
AND tbl_interpret.Nachname = 'Lindenberg'

--3. Aufgabe
--Erstellen Sie ein SQL-Statement, das die Anzahl der Midi-Dateien ausgibt, die dem Genre
--„Indie“ zugehören.
SELECT tbl_mididatei.ID, tbl_genre.Bezeichnung
FROM tbl_genre
INNER JOIN tbl_genre_mididatei
ON tbl_genre.ID = tbl_genre_mididatei.gerneID
INNER JOIN tbl_mididatei
ON tbl_genre_mididatei.midiID = tbl_mididatei.ID
WHERE tbl_genre.Bezeichnung = 'Indie'
GROUP BY tbl_genre.Bezeichnung

--4. Aufgabe
--Erstellen Sie ein SQL-Statement, das die Anzahl der Midi-Dateien ausgibt je Stimmkategorie.
SELECT tbl_stimmkategorie.Bezeichnung, tbl_mididatei.ID
FROM tbl_stimmkategorie
INNER JOIN tbl_mididatei
ON tbl_stimmkategorie.id = tbl_mididatei.StimmID
GROUP BY tbl_stimmkategorie.Bezeichnung

--5. Aufgabe
--Erstellen Sie ein SQL-Statement, das die Musikstücke auflistet, die dem
--Schwierigkeitsgrad „Anfänger“ bei der Midi-Datei entspricht. Dopplungen sollen nicht
--ausgegeben werden
SELECT DISTINCT tbl_schwierigkeitsgrad.Bezeichnung, tbl_musikstueck.Titel
FROM tbl_musikstueck
INNER JOIN tbl_mididatei
ON tbl_musikstueck.ID = tbl_mididatei.MusikstueckID
INNER JOIN tbl_schwierigkeitsgrad
ON tbl_mididatei.SchwierigkeitsgradID = tbl_schwierigkeitsgrad.ID
WHERE tbl_schwierigkeitsgrad.Bezeichnung = 'Anfaenger'

--6. Aufgabe
--Erstellen Sie ein SQL-Statement, das die Interpreten ausgibt, die jeweils mehr als 10 Midi-Dateien in der Datenbank haben.
SELECT COUNT(tbl_mididatei.ID) AS Anzahl, tbl_interpret.Nachname
FROM tbl_interpret
INNER JOIN tbl_interpret_mididatei
ON tbl_interpret.ID = tbl_interpret_mididatei.InterpretID
INNER JOIN tbl_mididatei
ON tbl_interpret_mididatei.MidiDateiID = tbl_mididatei.ID
HAVING COUNT(tbl_mididatei.ID) > 10

--7. Aufgabe
--Erstellen Sie ein SQL-Statement, das die Interpreten ausgibt, die älter sind als 65 Jahre
SELECT TIMESTAMPDIFF(YEAR,Geburtsdatum,CURRENT_DATE) AS Lebensalter, Vorname, Nachname
FROM tbl_interpret
HAVING Lebensalter > 65

--8. Aufgabe
--Erstellen Sie ein SQL-Statement, das die Musikstücke ausgibt, die älter sind als 30 Jahre und
--von denen mehr als 10 Midi-Dateien existieren.
SELECT tbl_musikstueck.Titel, COUNT(tbl_mididatei.MusikstueckID) AS Anzahl, TIMESTAMPDIFF(YEAR, Erscheinungsjahr,CURRENT_TIMESTAMP) AS Midialter
FROM tbl_musikstueck
INNER JOIN tbl_mididatei
ON tbl_musikstueck.ID = tbl_mididatei.MusikstueckID
HAVING Anzahl > 10 AND Midialter > 30
 
Werbung:
Anscheinend stehst Du mit Zählabfragen auf Kriegsfuß.
Wenn Du zählst (was eine Form von Aggregation ist), welche Elemente benötigst Du dazu neben den üblichen in der Abfrage?
- mindestens eine Aggregatfunktion (count, sum, ..)
- fast immer eine Gruppierung für nicht aggregierte Spalten (Group by..)
- manchmal eine Einschränkung auf dem Aggregat (Having ..)

Schau Dir das Thema bzw. Deine Antworten zu diesen Abfragen noch mal an.

Dann zu der Form Deiner Frage:
So ein Bild als Ausgangspunkt der Frage mag unter gewissen Umständen ok sein. Für Menschen, die das in einem Forum verläßlich beantworten sollen, eher problematisch. Es ist üblich, nachvollziehbare Beispiele zu liefern:
- Create Statement der Tabelle (DDL)
- Daten, also Insert Statements (DML)
- und die problematische Query

Wenn Du diese Punkte zusammenstellst, würdest Du selbst automatisch feststellen, dass manche Deiner Abfragen die Ausführung verweigern. Danach könntest Du gezielt schauen und hier fragen.
 
Dann zu der Form Deiner Frage:
So ein Bild als Ausgangspunkt der Frage mag unter gewissen Umständen ok sein. Für Menschen, die das in einem Forum verläßlich beantworten sollen, eher problematisch. Es ist üblich, nachvollziehbare Beispiele zu liefern:
- Create Statement der Tabelle (DDL)
- Daten, also Insert Statements (DML)
- und die problematische Query

Wenn Du diese Punkte zusammenstellst, würdest Du selbst automatisch feststellen, dass manche Deiner Abfragen die Ausführung verweigern. Danach könntest Du gezielt schauen und hier fragen.
Das ER Diagramm ist für die Beantwortung der Frage doch völlig ausreichend. Dazu brauchste kein DDL oder DML. Das Diagramm sagt alles aus.
 
Werbung:
Zurück
Oben