Eine von mehreren Bedingungen mit OR
Bei AND muss eine Zeile alle Bedingungen erfüllen. Bei OR reicht eine: Die Zeile kommt ins Ergebnis, wenn mindestens eine der Bedingungen für sie wahr ist. Welche, ist egal, und es können auch beide sein. Die Renn- und die Sportspiele:
SELECT titel, genre
FROM spiele
WHERE genre = 'Rennspiel'
OR genre = 'Sport'
ORDER BY titel;| titel | genre |
|---|---|
| Goal Rush | Sport |
| Ice Hockey Pro | Sport |
| Pixel Racer | Rennspiel |
| Turbo Karts | Rennspiel |
Beachte das „und“ in „die Renn- und die Sportspiele“. Du willst beide Arten von Spielen, aber kein Spiel ist gleichzeitig ein Rennspiel und ein Sportspiel, also würde genre = 'Rennspiel' AND genre = 'Sport' nichts finden. Wenn du eine Anfrage in SQL übersetzt, denke an eine Zeile: Muss sie beide Bedingungen erfüllen, oder reicht eine? Hier reicht eine, also ist es OR.
Die Bedingungen können sich auf verschiedene Spalten beziehen. Die Spiele, die sehr billig oder nur für Erwachsene sind:
SELECT titel, preis, altersfreigabe
FROM spiele
WHERE preis < 10
OR altersfreigabe = 18
ORDER BY titel;| titel | preis | altersfreigabe |
|---|---|---|
| Cube Logic | 5 | 3 |
| Zombie Town | 30 | 18 |
Typischer Fehler: die Spalte nur einmal geschrieben. Diese Abfrage ist kein Fehler, findet aber nur die Rennspiele:
SELECT titel, genre
FROM spiele
WHERE genre = 'Rennspiel' OR 'Sport'
ORDER BY titel;| titel | genre |
|---|---|
| Pixel Racer | Rennspiel |
| Turbo Karts | Rennspiel |
OR verbindet zwei vollständige Bedingungen, und 'Sport' allein ist keine Bedingung, sondern nur ein Text. SQLite hält so einen Text für falsch, also bleibt nur die erste Bedingung übrig. Schreibe die Spalte in jede Bedingung: genre = 'Rennspiel' OR genre = 'Sport'.
So schreibst du es:
Anweisungen
- 1
Die Abfrage im Editor sollte die Kunden aus Hamburg oder Dresden zeigen, zeigt aber nur die aus Hamburg. Behebe das. Das Ergebnis ist nach dem Namen sortiert und beginnt so:
name stadt Emma Becker Hamburg Greta Hoffmann Hamburg Ida Zimmermann Dresden … … - 2
Zeige darunter den Titel und den Preis der Spiele, die weniger als 15 € oder mehr als 45 € kosten, sortiert nach dem Preis:
titel preis Cube Logic 5 Word Quest 10 Goal Rush 50 Knight's Oath 60