Порядок обработки предложений в операторе 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
|
|