1. Сформувати декартовий добуток таблиць, вказаних в секції FROM.
Якщо в секції FROM вказана лише одна таблиця, то декартовим добутком буде вона сама.
2. Якщо є секція WHERE - застосувати умову секції WHERE до кожного рядка таблиці, утвореної в результаті декартового добутку і залишити тільки ті рядки, для яких ця умова виконується, тобто має значення TRUE; рядки, для яких умова має значення FALSE або NULL – відкидаються.
3. Якщо секція GROUP BY, - розділити рядки, що залишилися в результ. таблиці, на групи таким чином, щоб рядки в кожній групі мали одинакові значення по всіх стовпчиках групування. Стовпчик групування – це той стовпчик, який визначає групу рядків. В межах групи всі рядки мають в стовпчику групування одне і те саме значення.
| Таблиця
|
| ......
| стовпчик
групування
| ......
|
|
|
|
|
| значення 1
значення 1
..................
значення 1
|
|
|
|
|
|
|
| значення N
..................
значення N
|
|
|
|
|
|
4. Для кожного рядка, що залишився (або для кожної групи рядків) – обчислити значення кожного елемента із списку полів секції SELECT і утворити один рядок таблиці результату запиту. При будь-якому звертанні до стовпчика береться значення стовпчика для біжучого рядка (або групи рядків).
В якості аргументу статистичної функції використовуються значення стовпчика із всіх рядків, які входять у групу, - якщо вказана секція GROUP BY; якщо ж секції GROUP BY – немає, то використовуються значення стовпчика із усіх рядків таблиці результатів запиту.
5. Якщо є ключове слово DISTINCT – вилучити із таблиці результатів запиту всі рядки – дублікати.
6. Якщо є секція ORDER BY – відсортувати результати запиту.