Jaka jest kolejność interpretowania elementów zapytania SQL


Podstawowe zapytanie SQL wygląda tak:


SELECT DISTINCT TOP (lista)
FROM (LewaTabela)
(typ łączenia) JOIN (PrawaTabela)
ON ([warunek])
WHERE (warunek)
GROUP BY (lista)
WITH (CUBE | ROLLUP)
HAVING (warunek)
ORDER BY (lista)


W jakiej kolejności jest interpretowane? Poniżej lista wg kolejności:


1. FROM (LewaTabela)
2. ON (warunek)
3. (typ łączenia) JOIN (PrawaTabela)
4. WHERE (warunek)
5. GROUP BY (lista)
6. WITH (CUBE | ROLLUP)
7. HAVING (warunek)
8. SELECT
9. DISTINCT
10. ORDER BY (lista)
11. TOP (lista)


Serwer SQL najpierw wykona FROM z tabel, potem warunki dla FROM, nastepnie jak ma być grupowane, sumowane - na końcu zapytanie SELECT

Oznacza to, że wszystko musi być zdefiniowane w porządku w jakim SQL będzie to wyliczał (aliasy, pola wyliczane, itp).

 

Opublikowane w kategriach: MySQL, DB, Windows

Na wesoło ;)

Kolejka w aptece.
Pierwszy klient podchodzi do okienka, daje receptę, aptekarz mówi mu:
- 320 złotych proszę.
Drugi podchodzi, daje receptę, aptekarz mówi mu:
- 340 złotych.
Trzeci podchodzi, aptekarz mówi mu:
- 390 złotych.
Czwarty facet w kolejce się lekko poddenerwował i mówi:
- Panie mgr, wszyscy idziemy od tego samego lekarza, wszyscy mamy taki sam lek na recepcie, dlaczego jedni płacą mniej, a inni więcej? Mgr odpowiada:
- No wie pan, mamy taki kod z lekarzem, taką umowę....
Facet się zdenerwował i mówi:
- Panie, niech pan nam powie co to za lek, dlaczego ma inną cenę? Na recepcie było napisane : CC NWCMJDMCC CC. Klienci zaczęli nerwowo naciskać na aptekarza, bardzo chcieli żeby im przeczytał co to oznacza, co to za lekarstwo... W końcu aptekarz pod wpływem nacisku zaczął czytać z rumieńcami na twarzy:
- Cześć Czesiek, Nie Wiem Co Mu Jest, Daj Mu Co Chcesz, Cześć Czesiek.