Zum Inhalt
wannacode

WHERE: Zeilen filtern

Kurz gesagt: WHERE behält nur die Zeilen, die zu einer Bedingung passen, die aus Vergleichen und AND, OR und NOT gebaut ist.

Problem

Was ist ausverkauft?

Jeden Morgen will die Chefin wissen, welche Produkte nachbestellt werden müssen, weil sie ausverkauft sind. Die Tabelle hat 25 Produkte. Morgen hat sie 2500.

Sie braucht nicht alle Zeilen. Sie braucht nur die, bei denen der Lagerbestand 0 ist.

Die Idee

WHERE

WHERE behält nur die Zeilen, für die die Bedingung wahr ist:

SQLDatenbank: Shop

Die Datenbank geht jede Zeile durch, prüft stock = 0 und behält die wahren. Die Bedingung kann jede Spalte benutzen, nicht nur die in SELECT.

Die Vergleiche sind: = gleich, <> ungleich, <, >, <=, >=. Zahlen werden mit Dezimalpunkt geschrieben:

SQLDatenbank: Shop

Text steht in einfachen Anführungszeichen:

SQLDatenbank: Shop
Genauer, für Neugierige

SQLite akzeptiert auch city = "Plovdiv" in doppelten Anführungszeichen, aber nur aus alter Gewohnheit: Wenn es keine Spalte mit diesem Namen gibt, nimmt es den Ausdruck als Text. PostgreSQL meldet, dass es keine Spalte „Plovdiv“ gibt. Schreib Text in einfache Anführungszeichen, dann funktioniert die Abfrage überall.

Probier es aus

Die teuren Produkte

Zeige Name und Preis der Produkte, die mindestens 10 € kosten.

SQLDatenbank: Shop

Die Idee

AND, OR, NOT

Bedingungen lassen sich kombinieren:

  • AND: beide müssen wahr sein.
  • OR: mindestens eine ist wahr.
  • NOT: dreht die Bedingung um.

Günstige Produkte gibt es genug (für ein Angebot „nimm drei“):

SQLDatenbank: Shop

Sieh es dir an

Die OR-Falle

Das Marketing will die Kunden aus Sofia oder Plovdiv, die sich seit Anfang 2026 angemeldet haben. Hier ein erster Versuch. Führe ihn aus und sieh dir die Daten an:

SQLDatenbank: Shop
1. Die Abfrage mit OR und AND hat Maria geliefert, die sich 2025 angemeldet hat. Warum?

Mit Klammern sagt die Bedingung genau, was du meinst:

SQLDatenbank: Shop

Wann immer du AND und OR mischst, setze Klammern, auch wenn sie nicht nötig sind. Wer die Abfrage nach dir liest, muss nicht rätseln.

Probier es aus

Die wartenden Bestellungen

Zeige Nummer, Kunde und Status der Bestellungen, die new oder paid sind, aber noch nicht verschickt.

SQLDatenbank: Shop

Übung

Zwei Aufgaben

1. Alle Bestellungen außer den stornierten (cancelled). Zeige Nummer und Status. Probiere es mit NOT.

Die Bestellungen, die nicht storniert sind:

SQLDatenbank: Shop

2. Der Shop eröffnet ein Lager an der Küste. Welche Kunden aus Varna oder Burgas sind seit 2025 bei uns? Zeige Name, Stadt und Anmeldedatum.

Kunden aus Varna oder Burgas, die sich vor 2026 angemeldet haben:

SQLDatenbank: Shop

Test

Teste dich

1. Wie schreibst du „die Stadt ist Varna“?
2. Welche Bedingung findet die Produkte, die NICHT 2,50 € kosten?
3. Was liefert WHERE status = 'new' AND status = 'paid'?
4. In welcher Reihenfolge werden die Teile einer Abfrage geschrieben?

Erstellt von Ivo Gergov im Rahmen der Kampagne von Evo Tech für zugängliche Programmierausbildung ·