Bedingungen – Filtern von Daten und Datensätzen

Einfache Abfragen mit einer “Where-Klausel” stellen kein Problem mehr da. Die Where-Klausel kann aber noch viel mehr. In ihr können komplexe Abfragemechanismen definiert werden die mehrere Attribute und deren Werte umfassen.

Es gibt darüberhinaus aber mehr als eine reine gleichheits Abfrage.

Die wohl meist verwendeten Abfragen sind jedoch “=”, “<” oder “>”, mit denen entweder genau ein Wert, oder alle Werte unterhalb, bzw. oberhalb des Filters ausgewählt werden.

Zu den rein mathematischen Vergleichen, kommen noch Möglichkeiten hinzu, zum Beispiel nach Zeichenketten, oder nach Teilen von Zeichenketten zu suchen, nach Feldern die keinen Wert enthalten aber mit sogenannten Wildcards suchen.

Abfragekonditionen können auch beliebig miteinander kombiniert werden.

Nehmen wir zum Beispiel alle Artikel , die von “Adipass” geliefert werden und mehr als 40,00 EUR kosten, können wir die folgende Abfrage verwenden:

SELECT art_bez as “Produkt”, preis, lieferant_nr as “Hersteller”
FROM artikel
WHERE lieferant_nr = 1 AND preis > 40.00;

BedingungAND

Wir könnten auch alle Kunden suchen, die entweder Telefonnummer oder Mailadresse angegeben haben:

SELECT name as “Nachname”, vorname as “Vorname”, telefon as “Telefonnummer”, mail as “Emailadresse”
FROM kunden
WHERE mail IS NOT NULL OR telefon IS NOT NULL;

ISNOTNULL

Das Beispiel zeigt gleich zwei der oben genannten Abfragemechanismen. Wir suchen alle Kunden, die entweder eine Telefonnumer oder eine Mailadresse angegeben haben. Kunden von denen wir einen oder beide Angaben nicht gespeichert haben, weisen in der betreffenden Spalte den Eintrag “NULL” auf.

“NULL” ist aber kein konkreter Wert. Das ist sehr wichtig. Es gibt keinen “NULL”-Wert. NULL steht für Spalten deren Wert unbestimmt ist (weder true noch false). Eineinfaches Beispiel wäre eine Spalte “Versandtermin” für eingegangen Bestellungen. In dem Moment wo eine Bestellung eingeht, können wir noch gar nicht abschätzen wann diese zum Versand freigegeben wird. Das Datum in dieser Spalte stünde solange auf NULL, bis wir das genaue Datum kennen und den Wert dann in die Tabelle eintragen. NULL bezeichnet also das Fehlen von Werten. Deshalb ist eine Filterbedingung mit “= NULL” falsch. Hierfür verwenden wir entweder 

  • IS NULL oder
  • IS NOT NULL

 

Auch möglich ist eine Abfrage in der wir alle Kunden abfragen, deren Nachname mit einem “M” beginnen.

SELECT name as “Nachname”, vorname as “Vorname” 
FROM kunden
WHERE name LIKE ‘M%';

LikeSuche

Möglich wäre auch alle Kunden auszuwählen die ein “e” im Namen enthalten indem man das Wildcard-Zeichen “%” vor und nach den gesuchten Buchstaben setzt.
WHERE name LIKE ‘%e%';

Wichtig bei Ausgaben des SQL-Servers ist, dass Ausgaben nur scheinbar in einer bestimmten Reihenfolge erfolgen. Der SQL-Server legt von sich aus aber keine feste Reihenfolge vor. Wollen wir ein Ergebnis und eine Reihenfolge, die JEDESMAL wiederholbar ist, müssen wir dem Server dies mitteilen. Beispielsweise könnten wir unsere Kunden mit “M” nach dem Alphabet sortiert ausgeben wollen:

SELECT name as “Nachname”, vorname as “Vorname”
FROM kunden
WHERE name LIKE ‘M%’
ORDER BY name;

ORDER BY

Eine weitere Option für Abfragen stellt BETWEEN dar. Hier kann ein Wertbereich mit Unter- und Obergrenze definiert werden und der Wertbereich zwischen diesen Grenzen wird vom Server ausgegeben.

SELECT art_bez AS “Artikel”, preis AS “Verkaufspreis”
FROM artikel
WHERE preis BETWEEN 10.00 AND 50.00
ORDER BY preis DESC;

PreisAbsteigend

Durch das “DESC” am Ende haben wir sogar den Preis noch absteigend sortiert. Lassen wir das “DESC” weg, werden die Preise automatisch aufsteigend sortiert, dies ist der Standard bei SQL und benötigt daher kein Schlüsselwort.

Alle bisher genannten Filteroptionen sind miteinander kombinierbar und ermöglichen es dem Anwender jede gewünschte Information die auf dem Server gespeichert ist abzurufen. Es gibt noch Ergänzungen zu den Filtern und Erweiterungen, wie zum Beispiel die Möglichkeit aggregierte Ergebnisse zu erhalten, diese sehen wir uns aber zu einem späteren Zeitpunkt genauer an, da man hierfür noch andere Techniken benötigt. Mit den hier genannten Filtern kann man jedoch schon eine ganze Menge anfangen. Diese Funktionen sind als Grundlage mehr als ausreichend um auf das nächste Thema in Angriff nehmen zu können. Verknüpfungen.  

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>