Access: Abfragen mit SQL

Kreuztabellen-Abfrage

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Die TRANSFORM-Anweisung ist zwar recht komplex, ermöglicht aber im Ergebnis sehr übersichtliche Daten in einer Kreuztabellen-Abfrage.

Transkript

Die mit Abstand anspruchsvollste SQL-Anweisung ist die Pivot- beziehungsweise Kreuztabellenabfrage. Nicht zu verwechseln mit dem Kreuzprodukt, was meistens ein Fehler ist, und gigantische Daten erzeugt. Die Kreuztabellenabfrage reduziert Daten. Sie gruppiert diese nebenbei auch, und sie heißt deswegen Kreuztabelle, weil sie links verschiedene Zeilen aus den Datensätzen bildet, oben neue Spalten, und an deren Kreuzungspunkt einen Wert anzeigt. Typischerweise einen aggregierenden Wert, also eine Summe, Anzahl, oder ähnliches. Sie ist die einzige Abfrage, bei der neue Spalten, neue Felder entstehen, nämlich aus den Daten, die für die Spaltenüberschriften benutzt werden. Die Syntax lasse ich mir hier mal halbfertig erstellen. Es beginnt mit TRANSFORM, und beschreibt den inneren Teil. Da ist klassischerweise eine Aggregatfunktion drin. Dieses ist theoretisch eine Aggregatfunktion, praktisch wird der erste Wert genommen, insofern ist es ein einzelner Wert. Das ist immer die Notlösung, wenn einem nichts besseres einfällt. Mir fällt hier was besseres ein, nämlich will ich die Anzahl der Termine zählen, und bevor ich das fertigstelle, gebe ich erst einmal die Datenquelle an. Ich hatte die schon in einer Abfrage bereitgestellt, die habe ich einfach "TerminePlus" genannt. Alle Tabellen, die ich jetzt brauche, nämlich von den Mitarbeitern über die Lehrer zum Unterricht, zum Termin, und dort zu den Werktagen. Und deswegen kann ich mir für COUNT aus dieser Liste die Termin-ID raussuchen. Was ich zähle, ist im Grunde relativ Wurst. Also, hier mit COUNT ein Termin-ID-Feld, und das kriegt dann der Form halber einen neuen Namen aus dieser Abfrage. Jetzt kommen die Zeilenangaben. Ich möchte pro Lehrer sehen, wie viele Termine er hat, also kann ich mir den Namen des Lehrers aus "mitarName" komplett aussuchen. Kopieren muss ich erst nach dem gleichen Feld, also "mitarNameKomplett", und jetzt kommen die Spaltenüberschriften. Die bilden sich aus Daten, in diesem Fall aus den Namen der Werktage. Und damit bin ich soweit fertig. Also, die Datenquelle ist "qryTerminePlus", links in den Zeilen steht der Mitarbeitername, und deswegen muss danach gruppiert werden. Oben in den Spalten stehen die Werktagsnamen, und am Kreuzungspunkt steht die Anzahl der Termine. Wenn ich mir das im Ergebnis angucke, kann ich zum Beispiel hier für Tanja Gronwald feststellen, die hat am Dienstag eine Menge zu tun, da hat sie zehn Termine, und am Freitag nur drei. Daran gefallen mir zwei Sachen nicht: zum einen die Reihenfolge der Werktage, das ist, gelinde gesagt, irritierend. Und zum zweiten wüsste ich auch ganz gerne, welches Instrument sie betreibt. Fangen wir vielleicht mit den Werktagen an, da muss ich nämlich hinten nur hinter der Zeile "PIVOT" ein "IN" und dann eine Liste anhängen, die ich mir der Bequemlichkeit halber schon in die Zwischenablage gelegt habe. Wenn ich das jetzt aktualisieren lasse, sehen Sie: Montag, Dienstag, Mittwoch, und so weiter, ist korrekt sortiert. Das ist übrigens gnadenlos, wenn ich das mal so formulieren darf, wenn Sie wissen, am Sonntag läuft sowieso nichts, dann nehmen Sie das aus der Liste raus. Und egal, ob es Termine gibt, oder nicht, wird diese Spalte wegfallen. Wenn ich den Samstag entferne, ist sie auch dann weg, wenn es da eigentlich Termine gibt. Das war die erste Änderung, und ich will als zweites noch die Musikinstrumente hinzufügen. Also füge ich für die Zeile zusätzlich noch den Instrumentennamen dort ein. Und dann muss ich auch danach gruppieren, sonst gibt es einen Laufzeitfehler, also auch hier ein Instrumentname. Das ist eigentlich immer parallel. Und jetzt werden Sie sehen, dass hier mehr Zeilen erscheinen, im Moment 20, zum Beispiel Tanja Gronwald nur mit einer Zeile. Wenn ich das jetzt aktualisieren lasse, sind es 28. Unter anderem deswegen, weil sie verschiedene Instrumente anbietet. Am Dienstag immer noch 10, aber aus den 7 Montagsterminen sind jetzt 3 einzelne Gruppen, 1, 5 und 1 Termine geworden. Also, mit ein bisschen Hilfe kann man auch so eine Pivot- oder Kreuztabelle erzeugen, die ist in sich eigentlich nur eine bessere Gruppierungsabfrage. Aber sie ist durch die neu entstehenden Spalten viel, viel übersichtlicher. Und wenn Sie deren Reihenfolge oder überhaupt deren Vorkommen klären wollen, dann hängen Sie an die Spalten hier diese explizite Benennung dran, und das muss exakt dieser Datensatz sein, sonst verschwindet er sozusagen.

Access: Abfragen mit SQL

Nutzen Sie die mächtige Abfragesprache SQL in Microsoft Access. Anhand einer Beispiel-Datenbank lernen Sie die Möglichkeiten und Finessen von SQL im Detail kennen.

3 Std. 14 min (64 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieses Training ist für alle Access-Versionen verwendbar. Das vermittelte SQL-Wissen lässt sich mit geringen Abweichungen auch für andere relationale Datenbanksysteme nutzen.

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!