capypad
0 Tage Serie
sql / expert
Snippet

Multi-Set Intersections für komplexe Anforderungen

Verwendung von INTERSECT, um Zeilen zu finden, die mehrere unabhängige Bedingungen über verschiedene Zeilen derselben Tabelle hinweg erfüllen. Dies ist oft performanter als mehrfache Self-Joins bei Problemen der 'relationalen Division'.

snippet.sql
sql
1
2
3
4
5
SELECT user_id FROM user_permissions WHERE permission_id = 'READ_DATA'
INTERSECT
SELECT user_id FROM user_permissions WHERE permission_id = 'WRITE_DATA'
INTERSECT
SELECT user_id FROM user_permissions WHERE permission_id = 'ADMIN_ACCESS';
Erklärung
1
SELECT user_id FROM user_permissions WHERE ...
Jedes einzelne SELECT identifiziert Benutzer mit einer spezifischen Berechtigung.
2
INTERSECT
Der Mengenoperator, der nur die eindeutigen Werte zurückgibt, die in allen Ergebnismengen vorhanden sind.