Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Access_методичка.doc
Скачиваний:
9
Добавлен:
25.11.2018
Размер:
825.86 Кб
Скачать

Вибірка з декількох таблиць

Дуже часто виникає ситуація, коли вибірку даних треба проводити з відношення, яке є результатом злиття (join) двох інших відношень.

Для виконання операції такого роду в операторі SELECT після ключового слова FROM указується список таблиць, в яких здійснюється пошук даних. Після ключового слова WHERE вказується умова, по якій проводиться злиття. Для прикладу виконаємо такий запит: маючи таблиці 1 і 2 (Список і Консультация) отримати прізвища викладачів, які викладають математику, предмет, що вони викладають, та аудиторію, день і час консультації:

      SELECT ФИО.Список, Предмет.Список, Аудитория.Консультация, День.Консультация, Время.Консультация FROM Список, Консультация

              WHERE Предмет='Математика';

Слід звернути увагу на те, що коли в різних таблицях присутні однойменні поля, то для усунення неоднозначності перед ім'ям поля указується ім'я таблиці і знак "." (крапка). (Добре правило: ім'я таблиці указувати завжди!)

Природно, є можливість проводити злиття і більш ніж двох таблиць.

Обчислення усередині select

SQL дозволяє виконувати різні арифметичні операції над стовпцями результуючого відношення. В конструкції <список_вибірки> можна використовувати константи, функції і їх комбінації з арифметичними операціями і дужками. Наприклад, щоб взнати, який буде оклад викладачів (таблиця Список) після його підвищення на 29,8%, треба виконати команду:

        SELECT ФИО, Оклад+Оклад*29,8 FROM Список;

В арифметичних вражения допускаються операції складання (+), віднімання (-), ділення (/), множення (*), а також різні функції (COS, SIN, ABS - абсолютне значення і т.д.).

В SQL також визначені так звані агрегуючі функції, які виконують дії над сукупністю однакових полів в групі записів. Серед них:

  • AVG(<ім’я поля>) - середнє по всіх значеннях даного поля

  • COUNT(<ім’я поля>) або COUNT (*) - число записів

  • MAX(<ім’я поля>) - максимальне зі всіх значень даного поля

  • MIN(<ім’я поля>) - мінімальне зі всіх значень даного поля

  • SUM(<ім’я поля>) - сума всіх значень даного поля

Слід враховувати, що кожна агрегуюча функція повертає єдине значення. Приклади: визначити мінімальний оклад викладачів:

SELECT MIN(Оклад) FROM Список;

підрахувати кількість викладачів:

SELECT COUNT(*) FROM Список;

Область дії даних функції можна обмежити за допомогою логічної умови. Наприклад, кількість викладачів, навантаження яких перевищує 20 годин:

SELECT COUNT(*) FROM Список WHERE Нагрузка>20;

Групування даних

Групування даних в операторі SELECT здійснюється ключовим словом GROUP і ключовим словом HAVING, за допомогою якого задаються умови розбиття записів на групи.

GROUP нерозривний пов'язано з агрегуючими функціями, без них воно практично не використовується. GROUP розділяє таблицю на групи, а агрегуюча функція обчислює для кожної з них підсумкове значення. Визначимо для прикладу кількість викладачівз кожного предмету в таблиці Список:

SELECT Предмет, count(Предмет)

FROM Список

GROUP Предмет;

Ключове слово HAVING працює таким чином: спочатку GROUP розбиває рядки на групи, потім на отримані набори накладаються умови HAVING. Наприклад, усунемо з попереднього запиту ті предмети, які викладають по одному викладачу:

SELECT Предмет, count(Предмет)

FROM Список

GROUP Предмет;

HAVING COUNT(*)>1;

WHERE не допускає використання агрегуючих функцій.

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