Pořadí, v jakém se SQL klauzule do dotazu zadávají je všeobecně celkem známé. Pořadí logického SQL zpracování dotazu (logical query processing) je ale jiné než pořadí, v jakém je píšeme do skriptu.

Seznam SQL klauzulí v pořadí, jakém po sobě následují v SQL skriptu

Klauzule se do SQL dotazu píší v tomto pořadí

  1. SELECT,
  2. FROM,
  3. WHERE,
  4. GROUP BY,
  5. HAVING,
  6. ORDER BY

Seznam SQL klauzulí v pořadí, ve kterém se provedou

Logicky je SQL dotaz vyhodnocen v jiném pořadí než se píše ve skriptu

  1. FROM,
  2. WHERE,
  3. GROUP BY,
  4. HAVING,
  5. SELECT,
  6. ORDER BY

Všimněte si například klauzule SELECT. Vidíme, že je vyhodnocena předposlední i přes to, že ve skriptu musí být uvedena jako první. To znamená, že všechny klauzule před ní – FROM (1), WHERE (2), GROUP BY (3), HAVING (4) nevidí to, co se stane v klauzuli SELECT (5), to vidí až klauzule ORDER BY (6). Jaký to má dopad si ukážeme v příkladu.

Logické SQL zpracování dotazu příklad:

Podívejme se na skript, který schválně napíšeme špatně:

SELECT [CustomerKey] AS ID_Zakaznik
,[FirstName] AS Jmeno
,[LastName] AS Prijmeni
,[BirthDate] AS Datum_narozeni
FROM [AdventureWorksDW2012].[dbo].[DimCustomer]
WHERE Datum_narozeni>'1940-01-01'

Výsledkem tohoho dotazu bude chyba – Invalid column name, protože jsme v SELECT (5) definovali alias Datum_narozeni a tento alias poté používáme ve WHERE (2) klauzuli. Ta byla ale už dávno zpracovaná a v době jejího zpracování ještě alias nebyl vytvořen.

SQL zpracování dotazu
SQL zpracování dotazu – chybné pořadí klauzulí

Situace ale bude jiná, pokud alias aplikujeme až v ORDER BY. SELECT je totiž zpracován dříve (5) než ORDER BY (6), proto bude alias znát a dotaz proběhne úspěšně.

SQL zpracování dotazu
Příklad správného pořadí s ORDER BY odkazem na alias v SELECT klauzuli
5/5 - (1 vote)

Ing. Jan Zedníček - Data Engineer & Controlling

Jmenuji se Honza Zedníček a působím jako freelancer. Pracoval jsem dříve také jako BI developer, finanční controller a analytik. Vše pro společnosti z oblasti IT, bankovnictví, consultingu a výroby. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a občas neúspěšně odpálím pár balónků v golfu 🏌️

Již cca 10 let zapisuji na tento web různé návody určené zejména odborné veřejnosti, studentům a zájemcům o informace z oblastí Business intelligence, korporátních financí a reportingu.

🔥 Přihlašte se do naší Excel facebook skupiny (2.4k+ členů), kde si pomáháme Excel CZ/SK diskuse »

Leave a Reply

Your email address will not be published. Required fields are marked *