Rezept für Abfragen
Beim Formulieren einer SQL-SELECT
-Abfrage kann man sich an folgendem Flussdiagramm orientieren. Durchlaufe es entlang der Pfeile und du erhälst am Ende die fertige SQL-Abfrage.
Der „Satzbau“ innerhalt einer SELECT
-Abfrage nimmt einen anderen Weg, was aber einfach an der Beschaffenheit der englischen Sprache liegt! Diese wurde ursprünglich nicht für Datenbankanfragen „entwickelt“...
-
Ergebnistabelle 1. Ordnung
- Was sind die zugrunde liegenden Daten? (
FROM
) - Wie filtere ich die relevanten heraus? (
WHERE
)
- Was sind die zugrunde liegenden Daten? (
-
Ergebnistablle 2. Ordnung (Aggregation) oder nicht?
-
Aggregation
-
Gruppieren?
- Soll die gesamte Tabelle zu einer einzigen Zeile zusammengefaltet werden? (kein
GROUP BY
) - Soll die gesamte Tabelle erst in Teiltabellen gruppiert werden, und jede Teiltabelle zu einer Zeile zusammengefaltet werden? (
GROUP BY
) - In der
SELECT
-Klausel dürfen nur auf Spalten angewandte Aggregatsfunktionen und durchGROUP BY
gruppierende Spalten genannt werden
- Soll die gesamte Tabelle zu einer einzigen Zeile zusammengefaltet werden? (kein
-
Sollen die Zeilen, die sich aus dem „Zusammenfalten“ ergeben haben, nochmals gefiltert werden? (
HAVING
)
-
Gruppieren?
-
keine Aggregation
- In der
SELECT
-Klausel dürfen nur Spaltennamen vorkommen
- In der
-
Aggregation
-
Nachbereitung
- Soll sortiert werden? (
ORDER BY
) - Multimenge (
SELECT
) oder Menge (SELECT DISTINCT
) ? - Zeilen begrenzen? (
LIMIT
)
- Soll sortiert werden? (