SQL: SELECT-Abfragen, Teil II

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

Im ersten Teil dieser Artikelreihe haben Sie erfahren, wie Sie SELECT-Abfrage grundsätzlich aufbauen und wie Sie die gewünschten Felder zur Abfrage hinzufügen. Im zweiten Teil kümmern wir uns um die andere Möglichkeit, die angezeigten Daten einzuschränken: nämlich durch das Filtern der Datensätze mit entsprechenden Bedingungen.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1201_SQLBedingungen.mdb.

Bedingungen in Abfragen

In der Entwurfsansicht von Abfragen stellen Sie Kriterien ganz einfach ein, indem Sie festlegen, für welches Feld das Kriterium gelten soll und den Vergleichswert unten in der Zeile Kriterium der entsprechenden Spalte eintragen (siehe Bild 1).

Eingeben von Abfragekriterien in der Entwurfsansicht einer Abfrage

Bild 1: Eingeben von Abfragekriterien in der Entwurfsansicht einer Abfrage

Wenn Sie Kriterien für verschiedene Spalten festlegen möchten, tragen Sie diese einfach in die gewünschten Spalten ein, und wenn Sie mehrere Kriterien durch AND oder OR verknüpfen möchten, bietet die Entwurfsansicht auch hierfür eine Möglichkeit.

Unter SQL ist das kaum komplizierter, und das beste ist: Wenn Sie sich einmal nicht sicher sind, wie ein SQL-Ausdruck mit einer Bedingung aussehen soll, dann stellen Sie die entsprechende Abfrage einfach in der Entwurfsansicht zusammen und wechseln dann in die SQL-Ansicht – dort finden Sie dann den passenden Ausdruck vor.

Leider gelingt dies nicht mit allen möglichen Bedingungen: Wenn Sie beispielsweise eine verschachtelte und mit AND und OR versehene Bedingung formulieren möchten, müssen Sie diese auch in der Entwurfsansicht einer Abfrage manuell eintragen.

Das WHERE-Schlüsselwort

Das wichtigste Element beim Zusammenstellen von SELECT-Abfragen mit Bedingungen heißt WHERE. Es leitet den Teil des SQL-Ausdrucks ein, der die Bedingungen enthält. Die SQL-Ansicht für die Abfrage aus der Abbildung liefert beispielsweise folgenden Ausdruck:

SELECT tblArtikel.ArtikelID, tblArtikel.Artikelname
FROM tblArtikel
WHERE (((tblArtikel.Artikelname)="Chai"));

Wie Sie bereits erfahren haben, kann es nie schaden, den Tabellennamen bei der Auflistung der anzuzeigenden Felder mit anzugeben – auf diese Weise verhindern Sie Fehler, wenn beispielsweise ein Feldname in mehreren per Abfrage verknüpften Tabellen vorkommt und nicht eindeutig zugeordnet werden kann. In der WHERE-Bedingung ist Access jedoch etwas übervorsichtig. Zwar schaden überzählige Klammern-Paare nicht, jedoch führen diese auch leicht zu Fehlern. Aus dem Ausdruck

WHERE (((tblArtikel.Artikelname)="Chai"));

können Sie auch leicht den folgenden machen, indem Sie einige Klammern entfernen:

WHERE tblArtikel.Artikelname="Chai";

Und wenn Sie, was bei einer Abfrage mit nur einer Herkunftstabelle leicht möglich ist, noch die Tabellenbezeichnung weglassen, erhalten Sie schließlich diese Abfrage als eine der einfachsten Varianten einer Auswahlabfrage mit Kriterium:

SELECT ArtikelID, Artikelname
FROM tblArtikel
WHERE Artikelname="Chai";

Fehlerquelle Zeichenkette

Hier ist gleich ein wichtiger Aspekt und eine häufige Fehlerquelle bei der Zusammenstellung von SQL-Abfragen sichtbar: Der Vergleichsausdruck wird in Anführungszeichen eingefasst. In der Entwurfsansicht einer Abfrage nimmt Access einem die Arbeit ab: Es nimmt Vergleichsausdrücke wie Chai für das Feld Artikelname klaglos entgegen, wandelt es dann aber in “Chai” um. Wenn Sie beispielsweise einen Zahlenwert als Kriterium für das Feld ArtikelID eingeben, geschieht dies nicht – die Zahl wird so beibehalten, und auch in der SQL-Ansicht erscheinen keine Anführungszeichen:

SELECT ArtikelID, Artikelname
FROM tblArtikel
WHERE ArtikelID=1;

Access prüft hier automatisch, welchen Datentyp das Feld hat, für das Sie die Bedingung anlegen, und fügt im Falle des Datentyps Text automatisch Anführungszeichen hinzu. Zuvor prüft es jedoch, ob der angegebene Ausdruck eventuell einem Funktionsnamen oder Feldnamen entspricht. Wenn Sie einen fixen Vergleichsausdruck für ein Textfeld festlegen, müssen Sie Anführungszeichen verwenden. Am besten noch einfache Anführungszeichen, dann können Sie einen solchen SQL-Ausdruck später besser in VBA verwenden:

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