SELECT-Anweisung ◦ ?

SELECT ist der verbreitetste SQL-Befehl:

1. Er wählt im einfachsten Fall eines oder mehrere Attribute aus einer Einzeltabelle und definiert eine <Auswahlbedingung>:

> SELECT [DISTINCT] <Attribut_1>, ..., <Attribut_N>
> FROM <Tabelle>
> WHERE <Auswahlbedingung>
> [ORDER BY <Sortierkriterium> [DESC]]

> Das optionale Schlüsselwort DISTINCT garantiert, dass das Abfrageergebnis wieder eine relationale Tabelle (ohne Duplikate) ist. Wenn zum Beispiel gefragt wird, ob eine bestimmte Studentin eine Prüfung nach dem 30. März 2000 bestanden hat, so darf die Ergebnistabelle die Studentin nur ein einziges Mal erwähnen, obwohl sie seither vielleicht mehrere Prüfungen bestanden hat.

> Das ebenfalls optionale ORDER BY ... DESC (in descendent order) sortiert die Ergebnistabelle absteigend. Fehlt DESC, so wird aufsteigend sortiert.

1. SQL-Abfragen auf mehre ren Tabellen behandelt das Thema Beziehungen. Details finden Sie in der Access-Hilfe unter SQL in Abfragen, Formularen, Berichten, Makros und Modulen.

#### Beispiel

Ein Kombinationsfeld soll die Namen aller Veranstaltungen der Tabelle VERANSTALTUNG anzeigen. Datenherkunft sei die folgende SQL-Abfrage:

>     SELECT Veranstaltung FROM VERANSTALTUNG

Umgangssprachlich lautet die Abfrage:

> Bilde eine Ergebnistabelle aus dem Attribut Veranstaltung der Tabelle VERANSTALTUNG.

Wenn das Feld VERANSTALTUNG nicht gleich dem Schlüsselattribut von VERANSTALTUNG ist, dann muss die Abfrage durch DISTINCT erweitert werden, damit keine Duplikate ausgegeben werden:

>     SELECT DISTINCT Veranstaltung FROM VERANSTALTUNG

#### Aus QBE generiertes SQL

In der Regel muss der Entwickler eine SQL-Anweisung nicht selbst formulieren. Access generiert aus der QBE-Entwurfsansicht oder aus einem anderen Dialog mit dem Benutzer automatisch den passenden SQL-Befehl. Generierte SQL-Anweisungen enthalten allerdings oft Redundanz. Zum Beispiel werden Feldnamen überflüssigerweise mit dem Tabellennamen qualifiziert (zum Beispiel VERANSTALTUNG.Veranstaltung statt nur Veranstaltung), Namen zwischen eckige Klammern gesetzt oder Trennzeichen wie Semikolons hinzugefügt. Access könnte zum Beispiel die obige Abfrage wie folgt generieren (Redundanz rot markiert):

>     SELECT DISTINCT [VERANSTALTUNG].[Veranstaltung] FROM VERANSTALTUNG;

Eine SQL-Abfrage, die sich nicht in QBE darstellen lässt
SELECT-Anweisung