Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LECTIONS_BDBZ.doc
Скачиваний:
20
Добавлен:
16.12.2018
Размер:
1.63 Mб
Скачать

4. Використання псевдонімів таблиць

Уточнені імена полів (які, як правило, використовуються в багатотабличних запитах на вибірку) бувають дуже громіздкими.

Це можна усунути, використовуючи псевдоніми таблиць: в уточненому імені поля спочатку вказується ім’я або псевдонім таблиці, а потім (після крапки) – ім’я поля:

 синтаксична діаграма уточненого імені поля.

Псевдоніми таблиць визначаються в секції FROM згідно наступної синтаксичної діаграми.

Ключові слова, імена та псевдоніми відокремлюються пробілами. Той самий оператор SELECT (приклад №6) можна записати з використанням псевдонімів таблиць:

7). SELECT V. , T. Cina

FROM Vidpusk V, Tovary T

WHERE V. Tovar. = T. Nazva

(результат буде той самий, що і результат прикладу №6).

Лекція №13. Групування записів. Секція GROUP BY.

Секція order by – визначення порядку сортування

Результуючий набір даних можна відсортувати за допомогою секції

ASC (по замовчуванню) – сортування в порядку зростання значень поля.

DESC – сортування в порядку спадання значень поля.

- це остання секція в операторі SELECT (записується після секції WHERE).

Правила виконання запитів на вибірку доповнюються дією:

  1. Якщо є секція ORDER BY, то результуюча таблиця сортується по значенням стовпчиків, вказаних в списку полів секції ORDER BY: спочатку - по значенням стовпчика, вказаного першим в списку полів; потім – другий у списку полів стовпчик – він використовується для сортування в межах групи, яка визначається тими самими значеннями першого стовпчика і т.д.

Приклад: (відсортувати результат 7, по прізвищах покупців).

8). SELECT V. , T. Cina

FROM Vidpusk V, Tovary T

WHERE V. Tovar = T. Nazva

ORDER BY V.Pokupets

8)

V. №

V.Data

V. Kilkist

V. Tovar

V. Pokupets

T. Cina

2

3.09.

3

дріжджі

Герило

3.60

1

2.09.

150

цукор

Журавель

2.60

Результуюча таблиця відсортована по значенню цього поля.

Групування записів

Інколи потрібно отримати агрегатні значення (мінімум, максимум, середнє арифметичне тощо) не по всьому результуючому НД, а лише по кожній із груп записів, що входять в цей результуючий НД. Кожна група записів характеризується однаковим значенням якогось стовпчика.

Наприклад, задача:

вивести загальну кількість відпущеного товару по кожному товару.

- потрібно обчислювати суму кількостей відпуску товарів і групувати по назві товару.

Для цього в оператор SELECT після секції WHERE добавляється секція GROUP BY (якщо є секція ORDER BY, то секція GROUP BY записується після секції WHERE, але перед секція ORDER BY)

Якщо є секція GROUP BY, то обов’язково потрібно, щоб один із стовпчиків результуючої таблиці представлявся агрегатною функцією!

- тобто, щоб в секцію SELECT входив вираз, що містить агрегатну функцію.

Групування відбувається по не - агрегатним полям, отже для групування (тобто, для обчислення агрегатної функції не по всім рядкам таблиці, а лише по групам) – потрібно, щоб у секцію SELECT входило, по крайній мірі, одне не - агрегатне поле (групування здійснюється по одиноким значенням у цьому не - агрегатному стовпчику).

Всі не - агрегатні поля секції SELECT повинні бути вказані в секції GROUP BY!

синтаксична діаграма оператора SELECT:

ASC – в порядку зростання (по замовчуванню)

DESC – в порядку спадання.

Це лише та частина, яку ми вже вивчили. Повна синтаксична діаграма – приблизно вдвічі громіздкіша.

Приклади:

# Вивести загальну кількість відпусків по кожному із товарів:

19). SELECT V. Tovar, SUM (V. Kilkist) AS Vidp

FROM Vidpusk V

GROUP BY V. Tovar

19)

Tovar

Vidp

……

…….

……

…….

# Вивести загальну вартість для кожного із відпущених товарів:

20). SELECT V. Tovar,

SUM (V. Kilkist) AS Vart

FROM Vidpusk V, Tovary T

WHERE V. Tovar = T.Nazva

GROUP BY V. Tovar

20)

Tovar

Vart

……

…….

……

…….

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]