CodeGym /Kurse /SQL SELF /Einfache Abfragen mit SELECT, WHERE und ORDER BY bauen

Einfache Abfragen mit SELECT, WHERE und ORDER BY bauen

SQL SELF
Level 3 , Lektion 2
Verfügbar

Jetzt ist es an der Zeit, alles zusammenzubringen und zu lernen, wie man einfache, aber nützliche Abfragen mit einer Kombination aus SELECT, WHERE und ORDER BY schreibt. Diese Fähigkeit brauchst du für viele Aufgaben, von User-Listen bis zu kleinen Reports.

Bevor wir loslegen, hier nochmal die Struktur einer einfachen SQL-Abfrage:

SELECT spalte1, spalte2, spalte3
FROM tabelle
WHERE bedingung
ORDER BY spalte ASC
LIMIT anzahl_zeilen
OFFSET anzahl_zeilen;

Wenn SQL ein literarisches Werk wäre, dann wäre SELECT der Kapitel-Titel, FROM der Inhalt, und WHERE die Erklärung der Handlung. Und ORDER BY bringt Ordnung rein, damit das Lesen mehr Spaß macht!

Die Reihenfolge der Operatoren ist fest. Du kannst manche weglassen, aber die Reihenfolge darfst du nicht ändern.

Beispiel 1: Auswahl von Studentennamen mit sehr guten Noten

Stell dir vor, wir haben eine Tabelle students mit folgender Struktur und Daten:

id name age grade
1 Otto 21 A
2 Maria 22 B
3 Alex 20 A
4 Nat 23 C
5 Dan 25 B

Du willst eine Liste aller Studenten mit sehr guter Note (also grade = 'A'), sortiert nach Name. So geht's:

SELECT name
FROM students
WHERE grade = 'A'
ORDER BY name ASC;

Ergebnis:

name
Alex
Otto

Erklärung:

  1. SELECT name — wir holen nur den Namen. Keine Ressourcen verschwenden für Daten, die wir nicht brauchen.
  2. WHERE grade = 'A' — wir filtern nur die mit sehr guter Note.
  3. ORDER BY name ASC — wir sortieren die Namen alphabetisch.

Beispiel 2: Produktsuche nach Preis

Jetzt nehmen wir an, wir haben eine Tabelle products mit Infos zu Produkten:

id product_name category price
1 Smartphone Electronics 30000
2 Fernseher Electronics 45000
3 Kühlschrank Appliances 50000
4 Staubsauger Appliances 15000
5 Glühbirne Lighting 500

Unsere Aufgabe: Liste aller Produkte aus der Kategorie "Electronics", absteigend nach Preis sortiert. Die Query sieht so aus:

SELECT product_name, price
FROM products
WHERE category = 'Electronics'
ORDER BY price DESC;

Ergebnis:

product_name price
Fernseher 45000
Smartphone 30000

Erklärung:

  1. SELECT product_name, price — wir holen Produktname und Preis.
  2. WHERE category = 'Electronics' — wir filtern nur Produkte aus der Kategorie "Electronics".
  3. ORDER BY price DESC — wir sortieren absteigend nach Preis (das teuerste Produkt zuerst).

Beispiel 3: Komplexe Filter mit Logik

Wir nehmen wieder die Tabelle students. Sagen wir, wir wollen alle Studenten finden, die älter als 21 sind und deren Note B oder C ist, sortiert nach Alter. Hier kombinieren wir mehrere Bedingungen:

SELECT name, age, grade
FROM students
WHERE age > 21 AND (grade = 'B' OR grade = 'C')
ORDER BY age ASC;

Ergebnis:

name age grade
Maria 22 B
Nat 23 C
Dan 25 B

Erklärung:

  1. WHERE age > 21 — wir nehmen nur Studenten, die älter als 21 sind.
  2. AND (grade = 'B' OR grade = 'C') — wir filtern die, deren Note entweder B oder C ist. Die Klammern gruppieren die Bedingungen.
  3. ORDER BY age ASC — wir sortieren nach Alter, vom Jüngsten zum Ältesten.

Beispiel 4: Sortierung und Filter kombinieren

Zurück zur Tabelle products. Wir wollen Produkte finden, die weniger als 50.000 kosten, nach Kategorie sortieren und innerhalb jeder Kategorie nach Preis (aufsteigend).

SELECT product_name, category, price
FROM products
WHERE price < 50000
ORDER BY category ASC, price ASC;

Ergebnis:

product_name category price
Staubsauger Appliances 15000
Smartphone Electronics 30000
Fernseher Electronics 45000
Glühbirne Lighting 500

Erklärung:

  1. WHERE price < 50000 — zuerst filtern wir Produkte, die weniger als 50.000 kosten.
  2. ORDER BY category ASC, price ASC — wir sortieren nach Kategorie (alphabetisch), und innerhalb jeder Kategorie nach Preis aufsteigend.

Beispiel 5: Häufiger Fehler – Bedingungen vergessen

Jetzt schauen wir, was schiefgehen kann. Was, wenn wir die Gruppierung der Bedingungen vergessen, wie bei logischen Operatoren?

Falsche Query:

SELECT name, age, grade
FROM students
WHERE age > 21 AND grade = 'B' OR grade = 'C'
ORDER BY age ASC;

Hier wird OR grade = 'C' ohne AND age > 21 ausgeführt, und die Query gibt auch alle mit Note C zurück, selbst wenn sie jünger als 21 sind.

Deshalb immer Klammern für Klarheit nutzen:

WHERE age > 21 AND (grade = 'B' OR grade = 'C')
2
Aufgabe
SQL SELF, Level 3, Lektion 2
Gesperrt
Filter und Sortierung von Produkten
Filter und Sortierung von Produkten
2
Aufgabe
SQL SELF, Level 3, Lektion 2
Gesperrt
Komplexer Filter für Studenten
Komplexer Filter für Studenten
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION