10. Eine Abfrage erstellen

Abfragen ("Queries") basieren auf bereits vorhandenen Tabellen (oder auch anderen Abfragen) einer Datenbank.

Zum Erstellen einer neuen Abfrage wählen Sie im Hauptmenü aus den 'Objekten' Abfrage und klicken auf Neu. Sie erhalten ein Fenster mit folgenden Optionen:

Entwurfsansicht öffnet eine leere Auswahlabfrage; bei dieser wird aus einem gesamten Datenbestand eine gezielte Auswahl getroffen. Das Ergebnis lässt sich am Bildschirm anzeigen oder ausdrucken.

Die Assistenten vereinfachen die Erstellung einer Abfrage.

Kreuztabellenabfrage ermöglicht die Darstellung der Daten ähnlich einer Kalkulationstabelle. So können große Datenmengen in übersichtlicher Form angezeigt werden.

Duplikatsuche prüft, ob Duplikate in gewissen Feldwerten vorhanden sind.

Inkonsistenzsuche sucht nach Datensätzen in einer Tabelle, die mit keinen Datensätzen in anderen Tabellen im Zusammenhang stehen (Karteileichen).

 

Für unser Beispiel schließen wir alle Tabellen und wählen eine Neu - Entwurfsansicht. In dem folgenden Fenster kann man auswählen in welchen Tabellen gesucht werden soll.

Wir wählen TabLokalit und TabProben aus und erhalten zwei kleine Fenster mit der Verknüpfung der beiden Tabellen, die wir über Beziehung definieren (s.o.) verknüpft haben.

Aufgabe: Ich möchte wissen, für welche Proben in Beispiel 2 ich bereits Analysen durchgeführt habe (in unserem Beispiel waren das egg01-1 und unt01-1).

Ansatz: Wählen Sie aus den im oberen Fenster angezeigten Tabellen das Feld Lokalit aus und ziehen es in die erste Spalte der unteren Tabelle in die Zeile 'Feld'. In die nächste Spalte kommt Probe, dann Gestein und Analyse

Über Sortierung kann ich die Sortierungsart wählen und das Feld, nach dem sortiert wird.

Bei Anzeigen kann ich auswählen, ob das eingefügte Feld im Ergebnis auch angezeigt wird (d.h., ich kann z.B. nach einem Begriff in einem bestimmten Feld suchen, möchte das Feld aber nicht angezeigt haben).

Bei Kriterien geben Sie nun bei Analyse "Ja" ein (wir erinnern uns: Analyse ist ein Ja/Nein Feld).

Speichern Sie diese Abfrage als AbAnalyse ab.

Unsere Abfrage in der Entwurfsansicht sieht nun so aus:

 

Das Ergebnis in der Tabellenansicht sieht so aus:

 

Zwischen der Entwurfs- und Tabellenansicht kann man jederzeit über das Ansichts-Symbol ganz oben links wechseln.

Im Abfrage-Ergebnis können die Daten wie in der Original-Tabelle editiert werden.

Über Datei-Exportieren kann das angezeigte Ergebnis z.B. als Excell-Tabelle exportiert werden.

10.1.  Platzhalter

Öffne die vorhin erstellte Abfrage AbAnalyse und speichere sie als neue Abfrage unter dem Namen AbLokalit ab.

Als Platzhalter für die Abfragekriterien können * und ? verwendet werden:

E*enburg oder E??enburg findet Eggenburg und würde auch Eckenburg finden.

auch *burg und *gg* findet Eggenburg

Wenn ich mit Platzhaltern Arbeite, muß vor dem gesuchten Stichwort Wie stehen - siehe nachfolgende Beispiele.

 

10.2.  Und/Oder Abfragen

Folgende Abfrage sucht nach Datensätzen, in denen entweder "Sand" im Feld Gestein vorkommt oder "Fuchsofen" im Feld Lokalit.

Folgende Abfrage zeigt die Proben vom Fuchsofen mit Kalk

Alle Proben mit Kalk oder Sand (durch die Sternchen wird auch z.B. "Kalksandstein" angezeigt)

 

10.3.  'Platzsparende' Abfrageergebnisse

Es können auch mehrere Felder in ein Feld geschrieben werden. Feldnamen werden durch eckige Klammern [] definiert. Weiters können beliebige Zeichen eingefügt werden, die durch " gekennzeichnet sind. Einzelne Felder und Zeichenfolgen werden durch & getrennt.

Beispiel:

Proben-Nummern: [Probe] & " (" & [Gestein] & "); Lokalität " & [Lokalit] & " (" & [Land] & ")."

 

 

Abfrage speichern unter AbProbenliste

 

Das Abfrageergebnis:

 

10.4.  Parameter-Abfragen

Schnellabfrage nach Lokalitäten:

1.) Öffne die Abfrage AbLokalit.

Im Feld Lokalit schreiben wir in die Kriterien: [Welche Lokalität?]
Um Platzhalter zu erlauben:
Wie [Welche Lokalität?]

Abspeichern

2.) wird nun die Abfrage geöffnet, erscheint folgendes Fenster, in welchem ich meine Suchkriterien eingeben kann:

 

Oder: in jedes Feld Wie [Stichwort] als Oder-Abfrage eintragen, dann werden alle Felder durchsucht.

10.5.  Verknüpfungstypen

Öffne AbLokalit in der Entwurfsansicht und klicke im oberen Fenster 2x auf die Beziehungslinie.

 

 

Einstellungen:

(1) = Exklusionsverknüpfung oder Inner Join

Konsequenz: In einer Abfrage werden nur jene Lokalitäten berücksichtigt, denen auch Proben zugewiesen wurden und - umgekehrt - nur jene Proben, die einer Lokalität zugewiesen wurden. Alle anderen Einträge scheinen in der Abfrage nicht auf. Daher 'Exklusionsverknüpfung', weil bei der Abfrage auf beiden Seiten (Tabelle "1" und Tabelle "N") Datensätze ausgeschlossen werden.

(2) = Links-Inklusionsverknüpfung oder Left Join

Konsequenz: In der Abfrage werden ALLE Lokalitäten aus TabLokalit (= Tabelle "1") angezeigt. Aus TabProben (=Tabelle "N") werden aber nur die Proben berücksichtigt, die einer Lokalität zugewiesen wurden.

(3) = Rechts-Inklusionsverknüpfung oder Right Join

Konsequenz: In der Abfrage werden alle Proben angezeigt. Es werden aber nur jene Lokalitäten angezeigt, zu denen es bereits Proben gibt.

Eselsbrücke zum Merken: im Beziehungsfenster stellen wir immer die Tabelle "1" (TabLokalit) auf die linke Seite, die Tabelle "N" (TabProben) auf die rechte Seite. 'Links-Inklusionsverknüpfung' bedeutet dann, dass alle Datensätze aus der linken Tabelle in die Abfrage inkludiert werden (und bei Rechts-Inklusionsverknüpfung eben umgekehrt).

Diese Einstellung kann ich bereits bei der Definition der Beziehungen einstellen (siehe Kapitel Beziehungen definieren), indem ich im Fenster Beziehungen bearbeiten auf den Knopf Verknüpfungstyp klicke. Unabhängig von dieser Voreinstellung kann ich dies aber für jede Abfrage individuell einstellen.

 

10.6.  Ein paar Worte zu SQL

Um die Abfrage von verschiedenen Datenbanken zu vereinheitlichen, wurde eine standardisierte Abfragesprache entwickelt: SQL (für Structured Query Language). Nahezu alle relationalen Datenbanken verfügen heute über SQL-Fähigkeit.

SQL ist eine produkt(=software)unabhängige und standardisierte Abfragesprache, mit der Datenbanken verwaltet und ausgewertet werden könne. Grundsätzlich kann man immer statt eines Tabellen-, Abfragen- oder Feldnamen eine SQL-Anweisungen eingeben.

Z.B. stellen Abfragen in Access, die verschiedene Tabellen einbeziehen, eine SQL-Anweisung dar.


Ein Beispiel können wir sehen, indem wir AbAnalyse in der Entwurfsansicht öffnen und dann links oben im Ansichtssymbol SQL-Ansicht wählen.

Der SQL-Code sieht so aus:

SELECT TabLokalit.Lokalit, TabProben.Probe, TabProben.Gestein, TabProben.Analyse

FROM TabLokalit INNER JOIN TabProben ON TabLokalit.[Lok-ID] = TabProben.[Lok-ID]

WHERE (((TabProben.Analyse)=Yes));

 

SELECT bedeutet, dass geziehlt Felder aus Tabellen selektiert werden. Der "." bedeutet z.B., dass das Feld Lokalit zur Tabelle TabLokalit gehört. Dies sind die Tabellen und Felder, die im oberen Fenster angezeigt werden. FROM stellt dann den Bezug auf eine Tabelle her; danach kommt die Tabelle, aus der die Datensätze entnommen werden soll. WHERE ist dann die Abfrageoption; in diesem Falle jene Datensätze, in denen Analyse angeklickt wurde

 

10.7.  SQL Union-Abfragen

Erstellen eine Vereinigungsabfrage: Es werden in den Abfrageergebnissen Felder aus einer oder mehreren Tabellen oder Abfragen in einem Feld oder einer Spalte kombiniert.

 

PROBLEM: Ich will wissen, an welchen Lokalitäten Kalk vorkommt

und erstelle daher folgende Abfrage namens AbLokalitProbe:

Das Ergebnis sieht dann z.B. so aus:

 

UNBEFRIEDIGEND: Ich erhalte eine Tabelle, in der einzelne Lokalitäten unnötig oft vorkommen! Bei großen Datenmengen ist das eine unnötige Redundanz, weil ich ja einfach nur wissen wollte, wo Kalk vorkommt!

LÖSUNG: SQL Union-Abfrage

Erstelle eine neue Abfrage im Entwurfsmodus. Dann wähle im Menü Abfrage -> SQL spezifisch -> Union.

 

In das Fenster schreibe ich folgenden Code:

SELECT Lokalit FROM AbLokalitProbe

UNION SELECT Lokalit FROM AbLokalitProbe;

 

Speichern unter AbUnionSelect

 

und erhalte folgendes Ergebnis: