SQL erweitert um AND und OR
This commit is contained in:
@@ -33,7 +33,7 @@ Um alle Datensätze mit `amount` kleiner oder gleich 20 abzurufen, schreibt man:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Unique values
|
### Unique values
|
||||||
|
|
||||||
Angenommen man hat die folgende Tabelle:
|
Angenommen man hat die folgende Tabelle:
|
||||||
|
|
||||||
@@ -47,11 +47,11 @@ Angenommen man hat die folgende Tabelle:
|
|||||||
|
|
||||||
Man möchte alle Länder wissen, in denen das Produkt verkauft wurde.
|
Man möchte alle Länder wissen, in denen das Produkt verkauft wurde.
|
||||||
|
|
||||||
Wenn man die normale Abfrage, die wir kennen, verwenden: `SELECT country from sales` liefert sie `Poland`, `Germany`, `Poland`. Das ist nicht das, wonach wir suchen, weil Polen zweimal wiederholt wird.
|
Wenn man die normale Abfrage, die man kennt, verwendet: `SELECT country from sales` liefert sie `Poland`, `Germany`, `Poland`. Das ist nicht das, wonach man sucht, weil Polen zweimal wiederholt wird.
|
||||||
|
|
||||||
Um es zu lösen, können wir das `DISTINCT`-Schlüsselwort verwenden:
|
Um es zu lösen, kann man das `DISTINCT`-Schlüsselwort verwenden:
|
||||||
|
|
||||||
## NOT
|
### NOT
|
||||||
|
|
||||||
Das `NOT`-Schlüsselwort bedeutet, dass man nicht möchte, dass die Bedingung erfüllt wird.
|
Das `NOT`-Schlüsselwort bedeutet, dass man nicht möchte, dass die Bedingung erfüllt wird.
|
||||||
|
|
||||||
@@ -80,9 +80,58 @@ Das `NOT`-Schlüsselwort kehrt die Bedingung im Wesentlichen um. Zum Beispiel si
|
|||||||
|
|
||||||
`WHERE NOT age <= 20`
|
`WHERE NOT age <= 20`
|
||||||
|
|
||||||
## Vorrang
|
### AND
|
||||||
|
|
||||||
`AND` geht vor `OR`
|
Das `AND`-Schlüsselwort bedeutet, dass **beide** Bedingungen wahr sein müssen; wenn eine von ihnen nicht der Fall ist, wird die Bedingung nicht erfüllt.
|
||||||
|
|
||||||
|
Zum Beispiel ist hier eine `people`-Tabelle:
|
||||||
|
|
||||||
|
| Name | Alter | Geschlecht |
|
||||||
|
| ------ | ----- | ---------- |
|
||||||
|
| Joas | 13 | männlich |
|
||||||
|
| Holwa | 17 | männlich |
|
||||||
|
| Nohlas | 24 | weiblich |
|
||||||
|
| Polar | 23 | männlich |
|
||||||
|
| Loopa | 18 | weiblich |
|
||||||
|
|
||||||
|
Die folgende Abfrage:
|
||||||
|
|
||||||
|
`SELECT * FROM people WHERE gender = "female" AND age < 20`
|
||||||
|
|
||||||
|
bedeutet, dass man nach allen Datensätzen sucht, bei denen das Geschlecht „female“ ist und das Alter kleiner als 20 ist.
|
||||||
|
|
||||||
|
Dies wird das Ergebnis sein:
|
||||||
|
|
||||||
|
| Name | Alter | Geschlecht |
|
||||||
|
| ----- | ----- | ---------- |
|
||||||
|
| Loopa | 18 | weiblich |
|
||||||
|
|
||||||
|
### OR
|
||||||
|
|
||||||
|
Das `OR`-Schlüsselwort bedeutet, dass eine der Bedingungen wahr sein soll.
|
||||||
|
|
||||||
|
Zum Beispiel betrachtet man die folgende **people**-Tabelle:
|
||||||
|
|
||||||
|
| name | age | gender |
|
||||||
|
| ------ | ---- | ------ |
|
||||||
|
| Joas | 13 | male |
|
||||||
|
| Holwa | 17 | male |
|
||||||
|
| Nohlas | 24 | female |
|
||||||
|
| Polar | 23 | male |
|
||||||
|
| Loopa | 18 | female |
|
||||||
|
|
||||||
|
`SELECT * FROM people WHERE gender = 'female' OR age < 20`
|
||||||
|
|
||||||
|
Diese Abfrage bedeutet, dass man nach allen Datensätzen sucht, bei denen entweder das Geschlecht weiblich ist oder das Alter unter 20 liegt.
|
||||||
|
|
||||||
|
Das wird das Ergebnis sein:
|
||||||
|
|
||||||
|
| Name | Alter | Geschlecht |
|
||||||
|
| ------ | ----- | ---------- |
|
||||||
|
| Joas | 13 | männlich |
|
||||||
|
| Holwa | 17 | männlich |
|
||||||
|
| Nohlas | 24 | weiblich |
|
||||||
|
| Loopa | 18 | weiblich |
|
||||||
|
|
||||||
## Sortierung (ORDER BY)
|
## Sortierung (ORDER BY)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user