Aufgabe 15 - SQL Joins (E-Sports Edition) - Experts
Aufgabe 15 - SQL Joins (E-Sports Edition) - Experts
Abschnitt betitelt „Aufgabe 15 - SQL Joins (E-Sports Edition) - Experts“Worum geht es?
Abschnitt betitelt „Worum geht es?“In dieser Übung steigern Sie den Schwierigkeitsgrad aus Aufgabe 14: Sie verknüpfen mehr als zwei Tabellen, kombinieren verschiedene Join-Typen in einer Kette und nutzen Anti- und Semi-Joins, um Datenlücken aufzuspüren (siehe Kapitel 7 - Joins).
In dieser Übung üben Sie:
- Verknüpfen: mehr als zwei Tabellen in einer Abfrage zusammenführen.
- Kombinieren: verschiedene Join-Typen (
LEFT,RIGHT,INNER) in einer Kette einsetzen. - Anwenden: Anti-Joins und Semi-Joins zur Identifikation von Datenlücken nutzen.
Szenario: Global E-Sports Infrastructure
Abschnitt betitelt „Szenario: Global E-Sports Infrastructure“Das Turnier-Management wurde erweitert. Neben Teams und Matches gibt es nun Sponsoren und Arenen. Die Datenstruktur ist komplexer, da Sponsoren Verträge mit Teams haben und Matches in bestimmten Arenen stattfinden.
Erweitertes Schema & Testdaten
Abschnitt betitelt „Erweitertes Schema & Testdaten“CREATE TABLE teams ( team_id INT PRIMARY KEY, team_name VARCHAR(50), region VARCHAR(30));
CREATE TABLE matches ( match_id INT PRIMARY KEY, team_id INT, arena_id INT, game VARCHAR(50), kills INTEGER);
CREATE TABLE arenas ( arena_id INT PRIMARY KEY, arena_name VARCHAR(50), city VARCHAR(50), capacity INT);
CREATE TABLE sponsorships ( sponsor_id INT PRIMARY KEY, sponsor_name VARCHAR(50), team_id INT);
INSERT INTO teams VALUES (1, 'Cyber Vipers', 'Europe'), (2, 'Neon Samurais', 'Asia'), (3, 'Arctic Foxes', 'North America'), (4, 'Desert Rats', 'Africa');INSERT INTO arenas VALUES (10, 'Alpha Dome', 'Berlin', 5000), (20, 'Cyber Stadium', 'Tokyo', 15000), (30, 'Empty Hall', 'Unknown', 500);INSERT INTO matches VALUES (101, 1, 10, 'Valorant', 45), (102, 1, 20, 'League of Legends', 30), (103, 2, 20, 'Counter-Strike', 12), (104, 99, 10, 'Dota 2', 55);INSERT INTO sponsorships VALUES (501, 'Red Bull', 1), (502, 'Logitech', 1), (503, 'Intel', 3), (504, 'Nvidia', NULL);Arbeitsaufträge (SQL-Abfragen)
Abschnitt betitelt „Arbeitsaufträge (SQL-Abfragen)“Teil A: Die Multi-Join Kette
Abschnitt betitelt „Teil A: Die Multi-Join Kette“-
Der Full-Report (4 Tabellen): Erstellen Sie eine Liste, die den
team_name, dasgame, denarena_nameund densponsor_nameanzeigt.- Nutzen Sie
INNER JOINS. - Beachten Sie: Ein Team kann mehrere Sponsoren haben, was zu mehrfachen Zeilen pro Match führt.
- Herausforderung: Was passiert mit Teams, die keinen Sponsor haben?
- Nutzen Sie
-
Regionaler Location-Check: Finden Sie alle Teams aus der Region ‘Europe’, die in einer Arena in ‘Tokyo’ gespielt haben. Geben Sie Teamname, Arena und Stadt aus.
Teil B: Komplexe Outer Joins & “Orphans”
Abschnitt betitelt „Teil B: Komplexe Outer Joins & “Orphans”“-
Die “Verlorenen” Sponsoren: Identifizieren Sie Sponsoren, die aktuell kein Team unterstützen. Geben Sie die Namen dieser Sponsoren aus.
-
Arenen-Auslastung: Listen Sie alle Arenen auf (auch die, in denen noch nie ein Match stattfand) und zeigen Sie dazu die Namen der Teams an, die dort gespielt haben.
- Hinweis: Hier müssen
arenasundmatches(und dannteams) verknüpft werden. Überlegen Sie genau, welcher Join-Typ an welcher Stelle stehen muss, um keine Arena zu verlieren.
- Hinweis: Hier müssen
-
Exklusive Matches: Erstellen Sie einen Audit, der alle Teams und alle Sponsoren gegenüberstellt. Es sollen auch Teams ohne Sponsoren und Sponsoren ohne Teams sichtbar sein.
Teil C: Advanced Filtering (Semi- & Anti-Joins)
Abschnitt betitelt „Teil C: Advanced Filtering (Semi- & Anti-Joins)“-
Sponsor-Validierung: Zeigen Sie alle Details der Tabelle
matchesan, aber nur für jene Matches, deren teilnehmendes Team mindestens einen Sponsor der Marke ‘Red Bull’ oder ‘Logitech’ hat. Nutzen SieWHERE EXISTS. -
Die “Geister-Matches”: Finden Sie alle Matches (Details aus
matches), für die entweder das Team in derteams-Tabelle fehlt oder die Arena in derarenas-Tabelle nicht existiert. -
Self-Join Deluxe: Finden Sie Teams, die in der gleichen Stadt wie ein anderes Team gespielt haben, aber selbst aus einer anderen Region stammen. (Hinweis: Sie müssen über
matchesundarenasgehen und die Tabellearenasoderteamsmit sich selbst verknüpfen).
Abgabe & Kriterien
Abschnitt betitelt „Abgabe & Kriterien“- Abgabe der Datei
aufgabe15_joins.sql. - Alle Abfragen müssen auf einer PostgreSQL-Datenbank fehlerfrei ausführbar sein.
- Achten Sie auf saubere Formatierung und die Nutzung von Aliasen zur Lesbarkeit.
Wissens-Check
Abschnitt betitelt „Wissens-Check“-
Frage 1: Wenn Sie drei Tabellen mit
LEFT JOINverknüpfen (A ➡️ B ➡️ C) und in der Mitte (B) kein passender Datensatz gefunden wird, was passiert mit den Werten aus Tabelle C? -
Frage 2: Warum kann eine Kette von
INNER JOINSgefährlich sein, wenn man einen vollständigen Bericht über alle Teams erstellen möchte? -
Frage 3: Erklären Sie den Unterschied in der Ergebnismenge zwischen einem
CROSS JOINmit einerWHERE-Bedingung und einemINNER JOINmit einerON-Bedingung.
HTL Villach, Schuljahr 2025-2026,
https://www.htl-villach.at