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.
-
Finde zunächst heraus, welche
ArtistID
die Band „Queen“ hat. -
Nun kennst du also die
ArtistID
von „Queen“. Finde als nächstes heraus, welche Alben von „Queen“ hinterlegt sind. Tipp: Lasse dirAlbumID
undTitle
jener Alben anzeigen, derenArtistID
der soeben herausgefundenen Nummer entspricht. -
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
mitwarenkorb
joinenwarenkorb
mitbuch
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
- https://www.inf-schule.de/datenbanksysteme/gbuch/datenverknuepfen/uebungen
- https://sqlzoo.net/wiki/The_JOIN_operation (Besonderheit: Hier wird das Schlüsselwort
JOIN
verwendet − wir haben das kartes. Prod. + Join-Bedingung in derWHERE
-Klausel verwendet. Es handelt sich aber nur um eine andere Schreibweise)