Abfragen [basics]: Inkonsistenzen per Assistent suchen

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Der Abfrage-Assistent zur Inkonsistenzsuche hat eine etwas andere Aufgabe, als man es sich eventuell vorstellt. Das kommt jedoch darauf an, welche Vorstellung vom Begriff Inkonsistenz im Bereich Datenbanken hat. In diesem Artikel klären wir die Vorstellung des Abfrage-Assistenten zur Inkonsistenzsuche davon und was wir darüber denken und zeigen, wie Du diesen Assistenten dennoch sinnvoll einsetzen kannst – nämlich um schnell Datensätze zu finden, die noch nicht über das Fremdschlüsselfeld einer bestimmten anderen Tabelle verknüpft wurden.

Beispieldatenbank

Die Beispiele dieses Artikels findest Du in der Datenbank 2302_AbfragenBasics_InkonsistenzenPerAssistentSuchen.accdb.

Was sind Inkonsistenzen

Nach unserer Idee sind Inkonsistenzen im Datenbankumfeld eher solche Daten in Feldern wie Anrede oder PLZ, die das gleiche bedeuten sollen, aber unterschiedlich geschrieben wurden und somit nicht mehr als eins erkennbar sind. Wenn man also beispielsweise keine Lookuptabelle zum Speichern von Anreden erstellt hat und diese von Hand in das Feld eingibt, kann es passieren, dass man nicht nur Herr und Frau, sondern vielleicht auch mal Herrn einträgt.

Und wenn man dann das Anrede-Feld nutzt, um auf das Geschlecht zu schließen, gelingt das nicht mehr nur durch den Vergleich mit Herr oder Frau, die Datensätze mit der Anrede Herrn fallen dann durchs Raster.

Auch bei PLZs gibt es recht unterschiedliche Schreibweisen – manch einer nutzt noch das offiziell nicht mehr verwendete D-47137 statt nur 47137. Auch hier kann man dann nur noch ein geschränkt nach Adressen in einem bestimmten Postleitzahlenbereich suchen.

Während man das Problem bei der PLZ durch das Prüfen des Formats bei der Eingabe in den Griff bekommen kann, könnte man bei Anreden mit einer Lookuptabelle Inkonsistenzen vermeiden.

Was der Abfrage-Assistent zu Inkonsistenten sagt

Der Abfrage-Assistent meint mit Inkonsistenzen etwas anderes, nämlich Daten in einer Tabelle, die noch nicht von einer anderen Tabelle aus referenziert wurden, also quasi bezüglich dieser Beziehung im “luftleeren Raum” stehende Datensätze. In der Beschreibung gibt der Assistent das Beispiel von Kunden, die noch mit keiner Bestellung verknüpft sind. Es gibt also beispielsweise keinen Datensatz in der Tabelle tblBestellungen, der mit einem bestimmten Kunden verknüpft ist, und solche Kundendatensätze findet der Abfrage-Assistent zur Inkonsistenzsuche für uns.

Abfrage-Assistent zur Inkonsistenzsuche aufrufen

Diesen Assistent rufen wir aus dem gleichen Bereich des Ribbons heraus auf, der auch die Befehle zum Anlegen einer neuen Abfrage anbietet, also unter Erstellen|Abfragen unter dem Namen Abfrage-Assistent (siehe Bild 1).

Aufrufen des Dialogs Neue Abfrage

Bild 1: Aufrufen des Dialogs Neue Abfrage

Dies zeigt den Dialog Neue Abfrage an, wo wir neben ein paar weiteren Assistenten auch den Aufruf des Abfrage-Assistenten zur Inkonsistenzsuche finden (siehe Bild 2).

Der Dialog Neue Abfrage

Bild 2: Der Dialog Neue Abfrage

Wählen wir diesen Eintrag aus, erscheint auch gleich der erste Teil des Abfrage-Assistenten zur Inkonsistenzsuche (siehe Bild 3).

Schritt 1 des Assistenten

Bild 3: Schritt 1 des Assistenten

Hier wählen wir als Erstes die Tabelle aus, deren Datensätze in der Abfrage ermittelt werden sollen – wenn wir also die Kunden ermitteln wollten, die noch keine Bestellung aufgegeben haben, könnten wir das tun, aber wir wollen ein anderes Beispiel verwenden als im Assistenten angegeben.

Artikel ermitteln, die noch nie bestellt wurden

Also entscheiden wir uns dafür, die Artikel zu ermitteln, die noch nie erstellt wurden. Wir wählen im ersten Schritt also die Tabelle tblArtikel aus.

Im zweiten Schritt würden wir dann die Tabelle tblBestelldetails auswählen, weil dies die m:n-Verknüpfungstabelle ist, mit welcher die Artikel zu einer Bestellung hinzugefügt werden. Wir haben dann aber beim ersten Test gemerkt, dass es gar keine Artikel gibt, die in gar keiner Bestellung auftauchen. Also haben wir die Anforderung schnell angepasst und wollen nun die Artikel ermitteln, die im Monat Februar 2023 noch nicht bestellt wurden.

Dazu benötigen wir alle Datensätze der Tabelle tblBestelldetails, deren Bestelldatum im Februar 2023 liegen. Das erreichen wir, indem wir eine neue Abfrage namens qryBestelldetails_2023_02 erstellen, die neben der Tabelle tblBestelldetails auch noch die Tabelle tblBestellungen enthält. Letztere ist für das Datum nötig: Das Feld Bestelldatum befindet sich nämlich in dieser Tabelle. Wir fügen also dieses Feld zum Entwurfsraster hinzu und außerdem das Feld ArtikelID der Tabelle tblBestelldetails. Warum nur dieses eine Feld dieser Tabelle Weil wir nicht mehr benötigen. Wir müssen nur schauen, welche Datensätze der Tabelle tblArtikelID nicht mit der Tabelle tblBestelldetails verknüpft sind, daher reicht das entsprechende Fremdschlüsselfeld der Tabelle tblBestelldetails aus (siehe Bild 4).

Abfrage für die Bestelldetails aus Februar 2023

Bild 4: Abfrage für die Bestelldetails aus Februar 2023

Nach einem Neustart des Assistenten, den wir leider während der Erstellung der Abfrage nicht geöffnet lassen konnten, wechseln wir dort auf der zweiten Seite unter Ansicht zur Option Abfragen. Hier finden wir nun die neue Abfrage qryBestelldetails_2023_02 vor (siehe Bild 5). Diese wählen wir aus und klicken auf die Schaltfläche Weiter >.

Inkonsistenzen in den Bestelldetails aus Februar 2023 suchen

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar