SQL Grundkurs 1: Die Sprache erlernen

Mehrere Kriterien: AND und OR

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Darf es ein bisschen mehr sein? Fügen Sie mehrere Kriterien mit den logischen Operatoren AND und OR zusammen und spezifizieren Sie damit Filterkriterien bis ins letzte Detail.

Transkript

Wenn Sie in einer SQL-Anweisung mehrere Filterkriterien verwenden möchten, müssen Sie diese mit einem logischen "und" oder einem logischen "oder" verknüpfen. Wie das geht, zeige ich Ihnen in diesem Film. Die logischen Verknüpfungen, wenn beide Kriterien erfüllt sein müssen, wird in SQL mittels AND realisiert. Nur dann ist die Gesamtbedingung erfüllt, wenn beide einzelnen Bedingungen "wahr" liefern. Die Logik dahinter oder die Schreibweise wäre A AND B. Oder heißt, dass zumindest ein Kriterium erfüllt sein muss, man nennt es auch das "einschließende oder", das heißt es ist auch möglich, dass beide Kriterien erfüllt sind, aber es muss mindestens eines sein. Die Schreibweise wäre A oder B, A OR B. In manchen, auch Programmiersprachen, gibt es auch noch ein ausschließendes Oder oder auch oft XOR genannt. Das heißt, nur ein Kriterium darf erfüllt sein, aber nicht beide. Das ist in SQL nicht implementiert, das muss logisch umschrieben werden, z.B. über die Form "entweder A und nicht B"oder "nicht A und B". Das heißt, über die zwei Varianten AND und OR muss alles realisiert werden. Beginnen wir nun mit dem Kriterium "und". Betrachten wir uns kurz Kunden und einen Teil deren Adressdaten. Wir sehen, wir haben hier ein Länderkennzeichen, D für Deutschland, A für Österreich, Postleitzahl und Ort. Wir möchten nun z.B. alle aus Bayern filtern. Dazu müssen zwei Kriterien erfüllt sein, einerseits muss die Postleitzahl mit einem 8er beginnen, das ist aber nicht ausreichend, denn auch die Steirer in Österreich haben eine Postleitzahl, die mit 8 beginnt. Deshalb muss auch die zweite Bedingung erfüllt sein, dass das Länderkennzeichen ein D enthält, das würde also bedeuten "WHERE". Mit welcher der Bedingungen ich beginne, spielt prinzipiell keine Rolle, typischerweise beginnt man mit jener, die am meisten einschränkt, das heißt die gleich einmal viele Daten filtert. Ich fange jetzt einmal an mit dem Länderkennzeichen und sage "Land='D'", und nachdem ein zweites Kriterium folgt, erkennt sich das mit dem Schlüsselwort AND und, in dem Fall, die Postleitzahl beginnt mit 8, also "LIKE '8%'". Nachdem die Postleitzahl ja immer einen Character-Datentyp aufweisen muss, kann ich auch hier sinnvoller Weise mit "LIKE" arbeiten. Also, die eine Bedingung sagt, die Postleitzahl beginnt mit einem 8er und die andere sagt, das Länderkennzeichen beginnt mit einem D. Wenn wir nun die gesamte Anweisung ausführen, bekommen wir nur Kunden angezeigt, aus Bayern, Kunden aus der Steiermark sehen wir hier nicht. Wenn wir diese sehen wollten, dann müssten wir hier anstelle des Ds ein A eintragen und ausführen, dann hätten wir hier Kunden aus der Steiermark. Betrachten wir uns nun ein Beispiel für "oder". Wir wollen z.B. Artikel der Gruppen "Besteck" und "Geschirr". Hier müssen wir schon besonders achtgeben. In der umgangssprachlichen Form sagen wir, wir wollen Artikel der Gruppen "Besteck" und "Geschirr". Jetzt käme man natürlich in die Versuchung hier AND zu verwenden. Man muss aber aufpassen, logisch gesehen heißt es ja nichts anderes als: Wir wollen Artikel, die entweder der Gruppe "Besteck" oder der Gruppe "Geschirr" angehören. Deshalb müssen wir hier in dem Fall ein logisches "oder" verwenden. Wir haben hier die Artikelnummer, die Bezeichnung, die Gruppe und den Verkaufspreis und das Kriterium "WHERE Gruppe = 'BE'", das ist das Kürzel für Besteck oder "Gruppe = 'GE'", das wäre das Kürzel für Geschirr. Nun bekommen wir all jene Artikel, die entweder der einen oder der anderen Artikelgruppe angehören. Wenn wir mehrere Kriterien verwenden, die auf ein und dieselbe Spalte abzielen, so wie in diesem Beispiel, müssen wir aufpassen, dass jede Teilbedingung für sich syntaktisch vollständig sein muss. Das heißt, folgende Variante wäre zwar sehr intuitiv, aber in ANSI SQL falsch und damit ungültig. Nämlich einfach nur zu schreiben "WHERE Gruppe = 'BE' OR 'GE'". Das ist nicht möglich, weil der erste Teil wäre eine vollständige Bedingung, GE alleine heißt so gut wie nichts. Diese Variante wäre falsch, jede Teilbedingung muss vollständig sein. In diesem Fall haben Sie natürlich Recht, wenn Sie sagen, Sie könnten hier unter Umständen auch mit einer einzelnen Bedingung auskommen, nämlich dann, vielleicht haben Sie es ja auch schon erraten und vorweg genommen, wenn Sie den Operator "IN" verwenden. "IN" lässt sich mit "oder" substituieren oder eben auch umgekehrt. Diese zwei Varianten mit dieser Form oder mit der Verwendung des "IN", die wären äquivalent und können wahlweise verwendet werden. Es lässt sich natürlich nicht jedes "oder" durch ein "IN" substituieren, selbst dann, wenn es um die selbe Spalte geht. Nämlich dann, wenn wir einen anderen Operator als das = substituieren möchten. Wenn wir z.B. ein "LIKE" substituieren möchten, funktioniert das nicht. Betrachten wir uns dazu folgendes Beispiel, um das besser zu verstehen: Wir haben vorhin alle gefiltert, deren Postleitzahl mit 8 beginnt. Jetzt wissen Sie ja, dass es teilweise auch 9er gibt, also Postleitzahlen in Bayern, die mit 9 beginnen. Wenn wir jetzt z.B. alle filtern wollten, deren Postleitzahl mit 8 oder 9 beginnt, dann lässt sich das mit "IN" nicht ausdrücken, sondern wir benötigen dazu zwei Bedingungen, die wir mit "oder" verknüpfen. Die erste Bedingung wäre also "WHERE Postleitzahl LIKE '8%'" und die zweite Bedingung wäre "OR Postleitzahl LIKE '9%'". Und jetzt hätten wir alle, deren Postleitzahl entweder mit einem 8er oder einem 9er beginnt. Ich habe jetzt hier absichtlich nicht noch zusätzlich zwischen Österreich und Deutschland unterschieden, sondern in diesem Beispiel ausschließlich auf die Postleitzahl abgestellt. Ganz Findige könnten jetzt natürlich auf die Idee kommen und sagen, da brauche ich eigentlich auch nicht zwei Kriterien. Ich könnte das ja insofern auch lösen, dass ich sage, ich hole mir das erste Zeichen der Postleitzahl von links, wandle es in eine Zahl um und verwende dann "BETWEEN". Das könnte dann ungefähr so aussehen, dass ich sage, mit der Funktion "LEFT" hole ich mir das erste Zeichen aus der Postleitzahl, wandle es mit der Funktion "CAST" z.B. beim Microsoft SQL-Server in eine Zahl um und verwende dann das Kriterium "BETWEEN" 8 und 9. Das würde natürlich hier dasselbe Ergebnis liefern, ich persönlich würde es aber in die Kategorie einordnen, "Wir gehen mit der Kirche um das Kreuz", wie man so schön sagt. Das wäre aus meiner Sicht sehr umständlich, aber möglich. Dieses Beispiel soll Ihnen eigentlich nur zeigen, dass es in SQL oft sehr viele Möglichkeiten gibt, etwas zu lösen. Wir wollen diese Lösung aber nur unter dem Mantel der skurrilen Lösungsmöglichkeiten hier stehen lassen und nicht so sehr als ernsten Lösungsvorschlag hier betrachten. Ich möchte noch einmal zusammenfassen: Wenn Sie mehrere Kriterien verwenden, müssen die in ANSI SQL mit einem logischen "und" oder einem logischen "oder" zusammen gefügt werden. Wichtig ist, dass jedes dieser Kriterien in sich abgeschlossen und syntaktisch vollständig ist, sonst bekommen Sie einen Syntaxfehler. Die Logik und Syntax des ANSI SQL ist kompatibel, das heißt, diese Anweisungen funktionieren unter Oracle und MySQL exakt auf die gleiche Art und Weise.

SQL Grundkurs 1: Die Sprache erlernen

Arbeiten Sie sich in die Grundlagen der Datenbanksprache SQL am Beispiel von Microsoft SQL Server, Oracle und MySQL ein und lassen Sie sich die praktische Nutzung erklären.

14 Std. 40 min (112 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!