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:

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

Logicky je SQL dotaz vyhodnocen v jiném pořadí:

  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 & Finance

Jmenuji se Honza Zedníček a působím jako freelancer. Tuto práci dělám pro různé firmy již přes 10 let. Před tím jsem dlouhou dobu pracoval také jako BI developer, finanční controller, analytik a krátce jako finanční manažer. Vše pro společnosti z oblasti IT, bankovnictví a výroby. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a rád ochutnávám dobré rumy. Svoje znalosti a názory se snažím už několik let zapisovat na tento web, aby sloužily i někomu dalšímu - zejména 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 (1.4k+ členů), kde si pomáháme Excel CZ/SK diskuse »
=> Pokud vám článek pomohl, sdílejte ho nebo mě uveďte na vašich webových stránkách jako užitečný zdroj informací.

Leave a Reply

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