Abfragen: Verbünde („Joins“) » Aufgaben

Datenbank: fahrschule

Alle Informationen zu den Schüler/innen, inkl. allen Informationen ihres jeweils zugeordneten Fahrlehrers

Überlege zunächst, welche Tabellen zu verknüpfen möchtest. Erst danach überlege dir die passende Join-Bedingung.

Erwartetes Ergebnis:

Die „gejointen“ Tabellen lauten fahrschueler und fahrlehrer.

Die Join-Bedingung ist, dass die Werte der Spalte fl_kuerzel in der Tabelle fahrschueler mit den Werten der Spalte kuerzel in der Tabelle fahrlehrer übereinstimmen. Erstere ist ein Fremdschlüssel, letztere der Primärschlüssel.

SELECT *
FROM   fahrschueler,
       fahrlehrer
WHERE  fl_kuerzel = kuerzel     -- JOIN-Bedingung

Die Namen aller Schüler/innen, inkl. Vor- und Nachname ihres zugeordneten Fahrlehrers

Benenne die Spalten mit AS um, damit ersichtlich ist, ob es sich um den Vor- oder Nachnamen des Schüler/in oder des Fahrlehrers handelt.

Um Schreibarbeit zu sparen, kannst du vorher die Tabellennamen ebenfalls umbennnen, z.B. fahrschueler AS fs und fahrlehrer AS fl.

Erwartetes Ergebnis:

SELECT fahrschueler.vorname  AS schueler_vorname,
       fahrschueler.nachname AS schueler_nachname,
       fahrlehrer.vorname    AS fahrlehrer_vorname,
       fahrlehrer.nachname   AS fahrlehrer_nachname
FROM   fahrschueler,
       fahrlehrer
WHERE  fl_kuerzel = kuerzel     -- JOIN-Bedingung

Andere Möglichkeit mit umbenannten Tabellen (äquivalent):

SELECT fs.vorname  AS schueler_vorname,
       fs.nachname AS schueler_nachname,
       fl.vorname  AS fahrlehrer_vorname,
       fl.nachname AS fahrlehrer_nachname
FROM   fahrschueler AS fs,                -- Umbenennung der Tabelle
       fahrlehrer   AS fl                 -- Umbenennung der Tabelle
WHERE  fs.fl_kuerzel = fl.kuerzel         -- JOIN-Bedingung

Datenbank: chinook-music

Du möchtest dir die Tracks anzeigen lassen von einem Album der Band „Queen“, das du im Kopf hast... leider weißt du nicht mehr genau, wie es heißt.

  1. Finde zunächst heraus, welche ArtistID die Band „Queen“ hat.

  2. Nun kennst du also die ArtistID von „Queen“. Finde als nächstes heraus, welche Alben von „Queen“ hinterlegt sind. Tipp: Lasse dir AlbumID und Title jener Alben anzeigen, deren ArtistID der soeben herausgefundenen Nummer entspricht.

  3. Du erinnerst dich, dass du nach dem „Greatest Hits I“-Album gesucht hast. Welche Tracks befinden sich auf diesem Album? Tipp: Lasse dir alle Tracks anzeigen, bei denen die AlbumID jener des Albums „Greatest Hits I“ entspricht.

SELECT ArtistId
FROM   artists
WHERE  name = 'Queen'
SELECT AlbumId, Title
FROM   albums
WHERE  ArtistId = 51
SELECT *
FROM   tracks
WHERE  AlbumId = 185

Namen aller Alben inklusive des dazugehörigen Interpreten, sortiert nach Interpreten

Verwende einen Join der beiden Tabellen albums (um diese Tabelle geht es hauptsächlich) und artists (um den Namen des Interpreten zu erhalten). Überlege, welche beiden Spalten die Join-Bedingung bilden.

Erwartetes Ergebnis:

SELECT   Title AS Name_des_Albums,
         Name  AS Name_des_Interpreten
FROM     albums, artists
WHERE    albums.ArtistId = artists.ArtistId
ORDER BY Name

Namen aller Alben der Band „Metallica“

Verwende einen Join der beiden Tabellen albums (um diese Tabelle geht es hauptsächlich) und artists (um den Namen des Interpreten festzulegen). Überlege, welche beiden Spalten die Join-Bedingung bilden. Filtere anschließend nur jene Alben heraus, die von „Metallica“ sind.

Erwartetes Ergebnis:

SELECT   Title
FROM     albums, artists
WHERE    albums.ArtistId = artists.ArtistId AND
         Name = 'Metallica'

Name, Verfasser, Song-Länge und Kaufpreis aller Tracks des Albums „Black Album“

Verwende einen Join der beiden Tabellen tracks (um diese Tabelle geht es hauptsächlich) und albums (um den Namen des Albums zu bestimmen). Überlege, welche beiden Spalten die Join-Bedingung bilden. Filtere anschließend nur jene Tracks heraus, die auf dem Album „Black Album“ sind.

Erwartetes Ergebnis:

SELECT   TrackId, Name, Composer, Milliseconds, UnitPrice
FROM     tracks, albums
WHERE    tracks.AlbumId = albums.AlbumId AND
         Title = 'Black Album'

Namen aller Tracks aller Alben der Band „Iron Maiden“. Es sollen Track-Name und Alben-Name angezeigt werden, sortiert werden soll zunächst nach Album-Name und dann nach Track-Name.

Verwende einen Join der beiden Tabellen tracks (um diese Tabelle geht es hauptsächlich) und albums (um den Namen des Albums zu bestimmen). Überlege, welche beiden Spalten die Join-Bedingung bilden.

Joine nun zusätzlich die Tabelle artists, um den Namen der Band festzulegen. Überlege, welche beiden Spalten die Join-Bedingung bilden. Filtere anschließend nur jene Tracks heraus, die von „Iron Maiden“ sind.

Erwartetes Ergebnis:

SELECT   tracks.Name  AS Name_des_Tracks,
         albums.Title AS Name_des_Albums
FROM     tracks, albums, artists
WHERE    tracks.AlbumId = albums.AlbumId    AND  -- Join-Bedingung 1
         albums.ArtistId = artists.ArtistId AND  -- Join-Bedingung 2
         artists.Name = 'Iron Maiden'
ORDER BY albums.Title, tracks.Name

Finde durch geeignete SELECT * FROM ...-Abfragen heraus, was es mit den Playlists auf sich hat. Welche Tabellen sind beteiligt? Inwiefern sind die Tabellen verknüpft, über welche Fremdschlüssel? Finde heraus, wie du die Tracks einer Playlist anzeigen kannst.

Finde darüber hinaus heraus, was es mit den Genres und Media-Typen auf sich hat. Welche Tabellen sind beteiligt? Inwiefern sind die Tabellen verknüpft, über welche Fremdschlüssel? Finde heraus, wie du die Tracks eines bestimmten Genres oder Media-Typs anzeigen kannst.

Datenbank: onlineshop

Die Vor- und Nachnamen der Kund/innen, die das Buch mit der ISBN 978-3-596-52008-3 im Warenkorb haben.

Erwartetes Ergebnis:

SELECT vorname, nachname
FROM   kunde, warenkorb
WHERE  kunde.kundennr = warenkorb.kundennr     -- JOIN-Bedingung
AND    warenkorb.isbn = '978-3-596-52008-3'

Buchtitel und Autornamen jener Bücher, die im Warenkorb von Kunde mit Kundennr. 2 liegen.

Erwartetes Ergebnis:

SELECT titel, autor
FROM   warenkorb, buch
WHERE  warenkorb.isbn = buch.isbn     -- JOIN-Bedingung
AND    warenkorb.kundennr = 2

Vornamen und Nachnamen der Kunden, sowie Buchtitel und Autornamen aller im Warenkorb enthaltenen Bücher inkl. bestellter Anzahl, sortiert nach dem Nachnamen der Kund/innen

Verwende zwei Joins:

  • kunde mit warenkorb joinen
  • warenkorb mit buch joinen

Erwartetes Ergebnis:

SELECT vorname, nachname, titel, autor, anzahl
FROM   kunde,
       warenkorb,
       buch
WHERE  kunde.kundennr = warenkorb.kundennr  -- 1. JOIN-Bedingung
AND    warenkorb.isbn = buch.isbn           -- 2. JOIN-Bedingung
ORDER  BY kunde.nachname

Datenbank: movies-small

Die Namen aller Filme sowie die Namen der zugehörigen Regisseure

Verwende einen Join der beiden Tabellen movies (um diese Tabelle geht es hauptsächlich) und directors (um den Namen der Regisseure zu bestimmen). Überlege, welche beiden Spalten die Join-Bedingung bilden.

SELECT title,
       name AS regisseur
FROM   movies, directors
WHERE  movies.director_id = directors.id

Weitere Aufgaben