Порядок обработки предложений в операторе SELECT не соответсвует синтаксическому порядку представления оператора, который ближе к естественному языку.
| 1. FROM | Обращение к таблице (tovar) |
| articul | type | firm | description
|
|---|
| 100 | usb flash drive | kingston | 2Gb
| | 101 | hdd | transcend | 120Gb
| | 102 | usb flash drive | kingston | 4Gb
| | 103 | usb flash drive | transcend | 2Gb
| | 104 | hdd | transcend | 160Gb
| | 105 | hdd | toshiba | 160Gb
| | 106 | usb flash drive | transcend | 8Gb
| | 107 | mp3 player | transcend | 4Gb
|
|
| 2. WHERE | Отбор записей, удовлетворяющих условию (firm='transcend') |
| articul | type | firm | description
|
|---|
| 101 | hdd | transcend | 120Gb
| | 103 | usb flash drive | transcend | 2Gb
| | 104 | hdd | transcend | 160Gb
| | 106 | usb flash drive | transcend | 8Gb
| | 107 | mp3 player | transcend | 4Gb
|
|
| 3. GROUP BY | Группировка отобранных записей по указанным полям (type) |
| articul | type | firm | description
|
|---|
| 103 | usb flash drive | transcend | 2Gb
| | 106 | usb flash drive | transcend | 8Gb
| | 101 | hdd | transcend | 120Gb
| | 104 | hdd | transcend | 160Gb
| | 107 | mp3 player | transcend | 4Gb
|
|
| 4. HAVING | Отбор группы записей (HAVING count(articul)>1) |
| articul | type | firm | description
|
|---|
| 103 | usb flash drive | transcend | 2Gb
| | 106 | usb flash drive | transcend | 8Gb
| | 101 | hdd | transcend | 120Gb
| | 104 | hdd | transcend | 160Gb
|
|
| 5. SELECT | Определение полей, которые войдут в результирующую таблицу (count(articul),type) |
| count(articul) | type
|
|---|
| 2 | usb flash drive
| | 2 | hdd
|
|
| 6. ORDER BY | Сортировка результирующей таблица по указанному полю (type — по умолчанию сортировка проводится порядке возрастания) |
| count(articul) | type
|
|---|
| 2 | hdd
| | 2 | usb flash drive
|
|