Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Оператор UNION



Запит з використанням UNION можна створити тільки в режимі SQL. В результаті роботи створюється вибірка, яка містить рядки, що вибирає як перша, так і друга інструкція Select. Синтаксис:

Інструкція SELECT

UNION [ALL]

Інструкція SELECT

[ORDER BY ]

Кількість стовпців в обох інструкціях SELECT повинна бути однаковою. Типи даних в стовпцях повинні бути ідентичними. Імена стовпців беруться з першої інструкції SELECT. Якщо вказаний преди­кат ALL, то будуть виведені всі рядки обох запитів, інакше співпадаю­чі рядки виводитися не будуть. Інструкцій SELECT може бути декіль­ка, тоді треба вживати круглі дужки. Упорядкування ORDER BY мож­на використати єдиний раз після останньої інструкції, воно діє на всю вибірку. В ньому треба використовувати номери стовпців або їхні імена з першої вибірки.

Задача 5.10. Створити запит на об'єднання інформації про всі заробітки робітників з таблиці arhiv та відомості за вказаний рік з таб­лиці tzarobitok. Рік задавати як параметр.

Архівна таблиця arhiv (див. задачу 4.3) містить поля fio, tn та pidrozdil з таблиці tvidom і поля dat та zar з таблиці tzarobitok. Спочат­ку виберемо дані за вказаний рік і приєднаємо до них інформацію з таблиці arhiv. Однакові рядки повторюватися не будуть, тому що не вказаний преди­кат ALL.

PARAMETERS [Введіть рік] Short;

SELECT tvidom.pidrozdil AS [Підрозділ], tvidom.fio AS [Прізвище],

tvidom.tn AS [Табельний номер], tzarobitok.dat AS [Дата],

tzarobitok.zar AS [Заробіток]

FROM tvidom INNER JOIN tzarobitok ON tvidom.tn = tzarobitok.tn

WHERE (((Year([tzarobitok.dat]))=[Введіть рік]))

UNION

SELECT arhiv.pidrozdil, arhiv.fio, arhiv.tn, arhiv.dat, arhiv.zar

FROM arhiv

ORDER BY [Підрозділ], [Прізвище];

5.1.8 Розділ INTO

Синтаксис: INTO нова таблиця

Результати запиту будуть записані в нову таблицю з вказаним іменем і потрібною структурою, яка створюється автоматично. Якщо таблиця з таким іменем вже існує, то вона буде вилучена.

Задача 5.11. Записати до нової таблиці відомості про загальні заробітки всіх робітників (див. задачі 3.1 та 4.2).

SELECT tvidom.tn AS [Табельний №], tvidom.fio AS Прізвище,

Sum(tzarobitok.zar) AS Сума,

Avg(tzarobitok.zar) AS [Середнє за день]

INTO itogo

FROM tvidom LEFT JOIN tzarobitok ON tvidom.tn = tzarobitok.tn

GROUP BY tvidom.tn, tvidom.fio

ORDER BY tvidom.fio;

5.2 Інструкція INSERT

Ця інструкція використовується для вставки нових рядків до існуючої таблиці. Таблиця з вказаним іменем повинна бути створена заздалегідь, або треба використовувати команду SELECT INTO.

Синтаксис команди:

INSERT INTO ім’я існуючої таблиці

SELECT тіло запиту

Вираз SELECT тіло запиту – це запит на вибірку з однієї або декіль­кох таблиць, записаний за звичайними правилами.

Задача 5.12. Записати до архівної таблиці itogo, яка містить ві­домості про загальні заробітки всіх робітників (див. задачу 5.11) дані про заробітки робітників за період з 1.1.2006р. до 30.6.2006р.

INSERT INTO itogo

SELECT tvidom.tn AS [Табельний №], tvidom.fio AS Прізвище, (tzarobitok.zar) AS Сума,

(tzarobitok.zar) AS [Середнє за день]

FROM tvidom INNER JOIN tzarobitok ON tvidom.tn=tzarobitok.tn

WHERE tzarobitok.dat BETWEEN #1/1/2006# AND #6/30/2006#

ORDER BY tvidom.fio;

Дату запишемо в американському форматі в символах # і використа­ємо функцію BETWEEN для завдання проміжку дат.

Інструкція INSERT може використовуватися й для вставки кон­кретних значень до одного рядка. Тоді вона має вигляд:

Синтаксис команди:

INSERT INTO ім’я існуючої таблиці (перелік стовпців)

VALUES (перелік значень)

Можна не вказувати перелік стовпців, тоді значення будуть вставлені до всіх стовпців, починаючи з першого. Самі значення вка­зуються після ключового слова VALUES. Кількість стовпців в перелі­ку та кількість значень повинні співпадати. Значення повинні мати той же тип, що й стовпці, до яких вони повинні бути вставлені. Не можна задавати значення стовпців–лічильників.

Задача 5.13. Вставити нові дані до таблиці tzarobitok.

INSERT INTO tzarobitok

Values (42, #02/02/2006#, 100)

В таблиці tzarobitok записанітабельний номер, дата роботи та заробіток. В цьому випадку перелік полів можна не вказувати.

INSERT INTO tzarobitok (tn, zar)

VALUES (42, 100)

Якщо за замовчанням в конструкторі таблиці встановлено, що дата роботи дорівнює поточній даті, то це поле буде заповнено. Якщо значення за замовчанням не визначено, це поле залишиться вільним.

5.3 Інструкція UPDATE

Ця інструкція виконує запит на оновлення даних в таблиці.

Синтаксис команди:

UPDATE ім’я таблиці

SET ім’я поля = вираз

WHERE критерій відбору

Зі слова SET починається блок, що визначає список полів, для яких виконуватимуться зміни. В одній команді дозволяється змінюва­ти значення декількох полів. Вираз може містити константи, змінні та поля, навіть ті, що змінюються. Змінення до таблиці вносяться після виконання команди, тобто вираз використовує старі значення полів. Дані змінюються тільки в рядках, які задовольняють умовам, записа­ним після слова WHERE.

Приклад 5. 14. Робітникам, які мають дітей, збільшити нарахова­ну суму на 20 грн.

Перший спосіб. Використаємо існуючий зв’язок по полю tn (та­бельний номер) між таблицями tvidom і tzarobitok. Обмеження на кіль­кість дітей вкажемо в умові відбору WHERE

UPDATE tvidom INNER JOIN tzarobitok

ON tvidom.tn = tzarobitok.tn

SET tzarobitok.zar = [tzarobitok]![zar]+20

WHERE (((tvidom.ditej)>0));

Другий спосіб. Поле, для якого встановлений зв’язок між табли­цями tvidom і tzarobitok, вкажемо в умові відбору WHERE.

UPDATE tzarobitok, tvidom

SET tzarobitok.zar = tzarobitok!zar+20

WHERE (((tzarobitok.tn)=[tvidom].[tn]) AND ((tvidom.ditej)>0));

5.4 Інструкція DELETE

Інструкція вилучає рядки з вказаної таблиці. Синтаксис:

DELETE [ список полів ]

FROM ім’я таблиці AS псевдонім

WHERE умови вибору

В список полів треба включати поля, які входять до умов вибору. Якщо в конструкції FROM вказане ім’я однієї таблиці і відсутній роз­діл WHERE, список полів можна не вказувати. Якщо в конструкції FROM вказуються імена декількох таблиць, то треба вказати, з якої саме таблиці вилучати дані. Якщо між таблицями встановлено зв’язок типу "один–до–одного", то можна вилучати дані з однієї з них. Якщо між таблицями встановлено зв’язок типу "один–до–багатьох", то можна вилучати дані тільки з боку "багатьох".

Задача 5.15. Вилучити з таблиці tzarobitok відомості про заро­бітки робітників за вказаний рік. Рік вводити як параметр.

PARAMETERS [Введіть рік] Short;

DELETE tzarobitok. *, Year([tzarobitok]![dat])

FROM tzarobitok

WHERE (((Year([tzarobitok]![dat]))=[Введіть рік]));

5.5 Інструкція TRANSFORM

Ця інструкція створює перехресний запит. Синтаксис:

TRANSFORM вираз із підсумковою функцією

Інструкція SELECT

PIVOT вираз

[ IN список заголовків стовпчиків ]

Вираз із підсумковою функцією вказує, які саме підсумки та для яких полів будуть знайдені і записані до клітинок таблиці.

Інструкція SELECT записується за звичайними правилами, але обов’язково повинна мати розділ GROUP BY. Значення полів, вибра­них для угруповання, визначають заголовки підсумкових рядків. Їх може бути декілька.

PIVOT вираз – задає стовпець або вираз, значення якого викори­стовуються для заголовків стовпчиків.

Список заголовків стовпчиків після слова IN пишеться через кому і може містити перелік значень в лапках, який визначає їхній вигляд та порядок. Конструкція IN – необов’язкова.

Задача 5.16. Створити перехресний запит, до якого увійдуть загальні суми заробітку по кварталах для кожного підрозділу.

TRANSFORM Sum(tzarobitok.zar) AS [сума]

SELECT tvidom.pidrozdil, Sum(tzarobitok.zar) AS [Загальна сума]

FROM tvidom INNER JOIN tzarobitok

ON tvidom.tn = tzarobitok.tn

GROUP BY tvidom.pidrozdil

PIVOT "Квартал " & Format([dat],"q");

Інструкція відповідає запиту 3.4, результати роботи – рис. 3.8.





Дата публикования: 2015-02-22; Прочитано: 262 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.01 с)...