Logo Wissenstransfer Gerhard at CichnaDotCom

>> Wissensdatenbank / Datenmodellierung und Datenbanksysteme

Komplexe Datenbankabfragen auf mehrere Tabellen

Mengenoperationen

Das Ergebnis einer SELECT-Anfrage ist eine Menge von gleich strukturierten Datensätzen. Daher ist es grundsätzlich möglich, Mengenoperationen auf diesen Ergebnissen durchzuführen. Im SQL-Standard werden die Mengenoperationen Vereinigung (engl.: union), Schnittmenge (engl.: intersection) und Differenzmenge (engl.: minus) spezifiziert. Viele DBMS implementieren jedoch die Operationen Schnittmenge und Differenzmenge nicht, da sie in der Praxis nur sehr selten benötigt werden und mit Hilfe von Bedingungen mit WHERE nachgebildet werden können.

Da Mengenoperationen als Ergebnis wiederum Mengen liefern, können mit ihrer Hilfe Ergebnismengen mehrerer SELECT-Anfragen bereinigt und anschließend weiterverarbeitet werden. Die allgemeine Form für die Mengenoperation wird in der folgenden Abbildung dargestellt.
Abbildung: Schema für Mengenoperationen

Das Schlüsselwort für die duplikatfreie Vereinigungsmenge lautet UNION. Sollen bei der Vereinigung Duplikate nicht eliminiert werden, muss das Schlüsselwort UNION ALL verwendet werden. Für die Schnittmenge wird das Schlüsselwort INTERSECT eingesetzt und für die Differenzmenge je nach verwendetem DBMS das Schlüsselwort MINUS (z.B. Oracle) oder EXCEPT (z.B. MariaDB, seit Version 10.3.0). Folgendes Beispiel veranschaulicht den Einsatz der Mengenoperation Vereinigung: Es soll der Bestand aller Artikel mit Namen, Preis und Artikeltyp des Onlineshops nach Namen sortiert angegeben werden, egal um welchen konkreten Artikeltyp es sich handelt. Für diesen Zweck kann das in der folgenden Abbildung dargestellte und erläuterte SQL-Statement formuliert werden.
Abbildung: Beispiel für die Mengenoperation UNION

Die Ergebnismenge der einzelnen SELECT-Anfragen muss die gleiche Anzahl von Spalten haben, sonst schlägt die Mengenoperation fehl. Müssen dennoch Datensätze mit verschiedenen Attributen zusammengefasst werden, so können die ungleichen Spalten beispielsweise mit NULL oder einer anderen Konstante aufgefüllt werden. Im oben gezeigten Beispiel wird durch das Hinzufügen der Spalte Typ und das Auffüllen der Attribute mit den fest vorgegebenen Werten "Film" bzw. "Musikalbum" eine Information über die Herkunft der zu vereinigenden Datensätze mitgegeben.