Aufgaben-Python/courses/sql/08_m_zu_n_verknuepfungstabellen/test_aufgabe.sql

37 lines
1.2 KiB
SQL

-- 🧪 SQL TEST SUITE: MODUL 08 (n:m Beziehungen & Junction Tables)
-- Test 1: Tabellenprüfung
SELECT count(*) AS total_studenten FROM studenten;
SELECT count(*) AS total_kurse FROM kurse;
-- Test 2: Vollständiger n:m 3-Wege-Join
SELECT
s.matrikelnummer,
(s.vorname || ' ' || s.nachname) AS student_name,
k.kurs_code,
k.titel AS kurs_titel,
e.semester,
e.note,
e.status
FROM studenten s
JOIN einschreibungen e ON s.id = e.student_id
JOIN kurse k ON e.kurs_id = k.id
ORDER BY s.nachname, k.kurs_code;
-- Test 3: Bestehensprüfung für Kurs DB101 mit Note <= 2.0 (Erwartet Felix & Hannah)
SELECT
s.vorname, s.nachname, e.note
FROM studenten s
JOIN einschreibungen e ON s.id = e.student_id
JOIN kurse k ON e.kurs_id = k.id
WHERE k.kurs_code = 'DB101' AND e.note <= 2.0
ORDER BY e.note ASC;
-- Test 4: Kaskadierendes Löschen verifizieren:
-- Durch das Löschen von WEB201 dürfen keine verwaisten Einträge in einschreibungen verbleiben!
SELECT count(*) AS verwaiste_eintraege
FROM einschreibungen
WHERE kurs_id NOT IN (SELECT id FROM kurse);
-- Test 5: Verbleibende Gesamteinschreibungen (nach Löschen von WEB201: 7 - 2 = 5)
SELECT count(*) AS verbleibende_einschreibungen FROM einschreibungen;