capypad
0 Tage Serie
sql / expert
Snippet

Relationale Division durch Kardinalitätsabgleich

Die relationale Division identifiziert Entitäten, die mit jedem Mitglied einer bestimmten Menge verknüpft sind. Im Gegensatz zum Doppel-Negations-Ansatz zählt der Kardinalitätsabgleich die eindeutigen Treffer im Vergleich zur Größe der Zielmenge. Dies ist essenziell für 'Alles-oder-Nichts'-Abfragen.

snippet.sql
sql
1
2
3
4
5
SELECT student_id
FROM student_courses
WHERE course_id IN (101, 102, 103)
GROUP BY student_id
HAVING COUNT(DISTINCT course_id) = 3;
Erklärung
1
WHERE course_id IN (101, 102, 103)
Filtert den initialen Datensatz auf die erforderlichen Attribute.
2
GROUP BY student_id
Aggregiert die Daten nach der Kandidaten-Entität.
3
HAVING COUNT(DISTINCT course_id) = 3
Stellt sicher, dass die Entität genau die Anzahl der erforderlichen eindeutigen Elemente besitzt (hier 3).