Subqueries: Unterschied zwischen den Versionen
Aus FI-Wiki
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| Zeile 99: | Zeile 99: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Gibt den Namen des Kunden mit dem höchsten Gesamtbestellwert zurück. | Gibt den Namen des Kunden mit dem höchsten Gesamtbestellwert zurück. | ||
<syntaxhighlight lang="sql"> SELECT COUNT(*) FROM kunde WHERE land = ( SELECT land FROM kunde GROUP BY land ORDER BY COUNT(*) DESC LIMIT 1 ); </syntaxhighlight> <syntaxhighlight lang="text"> count ------ 3 </syntaxhighlight> | |||
Zählt die Anzahl der Kunden aus dem häufigsten Land. | |||
<syntaxhighlight lang="sql"> SELECT name FROM kunde WHERE kundennr = ( SELECT kundennr FROM bestellung ORDER BY betrag ASC LIMIT 1 ); </syntaxhighlight> <syntaxhighlight lang="text"> name ------ Ben </syntaxhighlight> | |||
Gibt den Namen des Kunden mit der niedrigsten Einzelbestellung zurück. | |||
[[Kategorie:Datenbanken]] | [[Kategorie:Datenbanken]] | ||
[[Kategorie:Semester2]] | [[Kategorie:Semester2]] | ||
Version vom 29. Oktober 2025, 13:41 Uhr
Subqueries in SQL
Subqueries (Unterabfragen) sind SQL-Abfragen, die innerhalb einer anderen Abfrage eingebettet sind. Sie liefern Zwischenergebnisse, die in der äußeren Abfrage verwendet werden.
Arten von Subqueries
- Skalare Subquery: Gibt genau einen Wert zurück
- Mehrzeilige Subquery: Gibt eine Liste von Werten zurück
- Korrelierte Subquery: Bezieht sich auf eine Tabelle der äußeren Abfrage
Beispieltabellen
Tabelle: kunde
| kundennr | name | land |
|---|---|---|
| 1 | Anna | Deutschland |
| 2 | Ben | Deutschland |
| 3 | Clara | Österreich |
| 4 | David | Schweiz |
| 5 | Eva | Deutschland |
Tabelle: bestellung
| bestellnr | kundennr | betrag |
|---|---|---|
| 101 | 1 | 900.00 |
| 102 | 2 | 1500.00 |
| 103 | 3 | 500.00 |
| 104 | 4 | 2200.00 |
| 105 | 2 | 300.00 |
Skalare Subquery
SELECT name
FROM kunde
WHERE kundennr = (
SELECT kundennr
FROM bestellung
WHERE betrag = (SELECT MAX(betrag) FROM bestellung)
);
Ergebnis:
name
------
David
Gibt den Namen des Kunden mit der höchsten Bestellung zurück.
SELECT name
FROM kunde
WHERE kundennr = (
SELECT kundennr
FROM bestellung
WHERE betrag = (SELECT MIN(betrag) FROM bestellung)
);
name
------
Ben
Gibt den Namen des Kunden mit der kleinsten Bestellung zurück.
SELECT name
FROM kunde
WHERE kundennr = (
SELECT kundennr
FROM bestellung
GROUP BY kundennr
ORDER BY SUM(betrag) DESC
LIMIT 1
);
name
------
BenGibt den Namen des Kunden mit dem höchsten Gesamtbestellwert zurück.
SELECT COUNT(*) FROM kunde WHERE land = ( SELECT land FROM kunde GROUP BY land ORDER BY COUNT(*) DESC LIMIT 1 );
count ------ 3
Zählt die Anzahl der Kunden aus dem häufigsten Land.
SELECT name FROM kunde WHERE kundennr = ( SELECT kundennr FROM bestellung ORDER BY betrag ASC LIMIT 1 );
name ------ Ben
Gibt den Namen des Kunden mit der niedrigsten Einzelbestellung zurück.
