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
------
Ben

Gibt 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.