Wie ermittelt man die Vereinigungsmenge, Schnittmenge, usw. aus zwei Tabellen ?
Ein zweckmäßiges Werkzeug ist die UNION-Abfrage. Damit kann man mehrere Abfragen
hintereinander ausführen und das Ergebnis als Summe dieser einzelnen Abfragen
ausgeben. Die UNION-Abfrage hat nur einen kleinen Nachteil:
Sie kann nicht schnell in der QBE-Ansicht mit der Maus zusammengeklickt werden. Statt dessen muss
man so vorgehen:
Neue Abfrage erstellen und ganz normal die erste Abfrage in der QBE-Ansicht
erstellen.
Menü 'Ansicht' -> 'SQL-Ansicht' wählen
Gesamten Text markieren und in die Zwischenablage kopieren
Ein weiteres Abfragefenster für die UNION-Abfrage öffnen. Das Fenster 'Tabelle
anzeigen' schließen und im Menü 'Ansicht' -> 'SQL-Ansicht' wählen.
Inhalt aus der Zwischenablage einfügen
Neue Zeile eingeben und das Schlüsselwort UNION eintippen
Zurück zu Schritt 1, bis alle Abfragen aneinander gehängt wurden.
Voraussetzungen für die UNION-Abfrage:
UNION steht nur zwischen den Abfragen, das letzte UNION muss man sich verkneifen.
Alle Abfragen haben die gleiche Anzahl von Spalten
Alle Abfragen haben die gleichen Spaltenüberschriften. Falls dies ausnahmsweise
nicht der Fall sein sollte, muß man mit Alias-Namen arbeiten. In der QBE-Ansicht gibt
man dann z.B. den Aliasnamen 'Nummer' für das Feld 'Nr' so an 'Nummer:[Tabelle A].Nr'
in SQL verwendet man AS, z.B. 'SELECT [Tabelle A].Nr AS [Nummer] ...'
Die Reihenfolge der Spalten muß ebenfalls bei allen Abfragen gleich sein. Falls
dies ausnahmsweise nicht so ist, muß man die Reihenfolge der Spalten in den
unpassenden Abfragen entsprechend ändern.
Die Felddatentypen müssen auch noch stimmen. Sollte dies nicht der Fall sein, kann
man sich manchmal mit den Typumwandlungsfunktionen (ZInteger, ZDate, ZCurrency ...) helfen.
UNION-Abfragen filtern doppelte Datensätze heraus. Wenn dies nicht gewünscht wird,
dann muß das Schlüsselwort UNION ALL verwendet werden. Zu den Beispielen gibt es
übrigens eine Demo-Datenbank. Weitere Anwendungsbeispiele
für die UNION-Abfrage liefern eine Übersicht über alle
Beziehungen in einer Access-Datenbank und unnötige,
mehrfache Beziehungen in einer Access-Datenbank.
|
Tabelle A
Nr | Wert |
1 | A |
2 | B |
3 | C |
4 | D |
Tabelle B
Nr | Tag |
1 | Mo |
2 | Di |
5 | Mi |
6 | Do |
|