Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Приклад 3





Визначити КІЛЬКІСТЬ ВІДПРАЦЬОВАНИХ ДНІВ працівника з табельним номером 1234 у 2 місяці:

SELECT Табель.[Кількість відпрацьованих днів] FROM Табель WHERE (((Табель.Місяць)=2) AND ((Табель.[Табельний номер])=1234));

Речення GROUP BY дозволяє з’єднати записи з однаковими значеннями заданих полів (таких як МІСЯЦЬ, ТАБЕЛЬНИЙ НОМЕР) в один запис. Якщо в інструкцію SELECT додати агрегатну функцію SQL (SUM, AVG, тощо), для кожного запису створюється підсумкове значення. Наприклад, необхідно визначити суми окладів по кожній посаді. На рис. 1. відображено інструкцію запиту та результат його виконання.

 

Рис. 1. Інструкція запиту та результат його виконання

 

Речення HAVING є необов’язковим і визначає, які згруповані записи повинні бути вибрані інструкцією SELECT з реченням GROUP BY. Наприклад, необхідно визначити суми окладів по посадах «Секретар» та «Економіст». У цьому випадку запит буде мати такий вигляд: SELECT Працівники.Посада, SUM([Оклад]) AS [Сума окладів] FROM Працівники GROUP BY Працівники.Посада HAVING ПОСАДА="Економіст" OR ПОСАДА="Секретар";

Параметр WITH OWNERACCESS OPTION дає змогу користувачам, котрі не мають доступу до початкових таблиць, переглядати дані запиту. Для створення запитів на основі кількох таблиць речення FROM має такий формат: FROM <таблиця1> <тип з’єднання> <таблиця2> ON <таблиця1>.<поле>=<таблиця2>.<поле>. Тип з’єд­нання може приймати такі значення:

· INNER JOIN — з’єднуються записи з двох таблиць, в яких зустрічаються однакові значення у полі, яке є спільним для обох таблиць;

· LEFT JOIN — з’єднуються всі записи з першої таблиці і тільки ті записи з другої таблиці, в яких значення спільного поля збігаються;

· RIGHT JOIN з’єднуються всі записи з другої таблиці і тільки ті записи з першої таблиці, в яких значення спільного поля збігаються;

Наприклад, з таблиць РОБОЧІ ДНІ, ПРАЦІВНИКИ та ТАБЕЛЬ треба вибрати записи за місяць, значення якого запрошується під час виконання запиту та в яких нарахована заробітна плата >700. У запит включити лише такі поля: МІСЯЦЬ, ПРІЗВИЩЕ, НАРАХОВАНО (розрахункове поле). Виконати сортування записів по полям МІСЯЦЬ та ПРІЗВИЩЕ. Інструкція SQL для розв’язання цієї задачі буде мати такий вигляд:
SELECT Табель.Місяць, Працівники.Прізвище, [Працівники]![Оклад]/[Робочі дні]![Кількість робочих днів]*[Табель]![Кількість відпрацьованих днів] AS НАРАХОВАНО FROM [Робочі дні] RIGHT JOIN (Працівники RIGHT JOIN Табель ON Працівники.[Табельний номер] = Табель.[Табельний номер]) ON [Робочі дні].Місяць = Табель.Місяць WHERE (((Табель.Місяць)=[Уведіть номер місяця]) AND (([Працівники]![Оклад]/[Робочі дні]![Кількість робочих днів]* [Табель]![Кількість відпрацьованих днів])>700)) ORDER BY Табель.Місяць, Працівники.Прізвище;

Створення нової таблиці на основі запиту. Інструкція SELECT INTO дозволяє замість об’єкта RECORDSET створити таблицю з вибраними записами і має такий формат:

SELECT <список полів> INTO <нова таблиця>

[IN <зовнішня база даних>]

FROM <таблиця-джерело>;

Наприклад, необхідно створити таблицю ЗАРОБІТНА ПЛАТА, в яку необхідно включити всі поля (в одному екземплярі) з таблиць ТАБЕЛЬ, ПРАЦІВНИКИ та РОБОЧІ ДНІ: SELECT Табель.Місяць, [Робочі дні].[Назва місяця], Табель.[Табельний номер], Працівники.Прізвище, Працівники.Ок­лад, Табель.[Кількість відпрацьованих днів], [Робочі дні].[Кіль­кість робочих днів] INTO [ЗАРОБІТНА ПЛАТА] FROM [Робочі дні] RIGHT JOIN (Працівники RIGHT JOIN Табель ON Працівники.[Табельний номер] = Табель.[Табельний номер]) ON [Робочі дні].Місяць = Табель.Місяць;

Вилучення записів. Записи таблиць, які перелічені у реченні FROM і задовольняють умову, задану у реченні WHERE, можна вилучити за допомогою запиту на вилучення записів. Формат інструкції на вилучення записів:

DELETE [таблиця.*]

FROM таблиці

WHERE <умова>;

Інструкція DELETE дозволяє вилучити записи з окремої таблиці або таблиць (з таблиці «БАГАТО» відношення «один-до-багатьох»). Наприклад, в таблиці ТАБЕЛЬ вилучити записи за 1 місяць:

DELETE *

FROM Табель

WHERE [МІСЯЦЬ]=3;

Додавання записів у запиті. Для додавання записів використовується інструкція INSERT INTO. Формат запиту для додавання одного запису: INSERT INTO <таблиця або запит> [(поле_1[, поле_2[,...]])] VALUES (значення_1[, значення_2[,...])

Наприклад, додати запис у таблицю ТАБЕЛЬ:

INSERT INTO ТАБЕЛЬ ([Місяць],[Табельний номер], [Кількість відпрацьованих днів]) VALUES (3,1238,22);

Формат запиту для додавання кількох записів:

INSERT INTO <таблиця або запит> [IN внешняяБазаДанных] [(поле_1[, поле_2[,...]])] SELECT [<джерело даних>]поле_1[, поле_2[,...] FROM <вираз>;

Додати кілька записів можна з іншої таблиці або запиту, які визначаються за допомогою інструкції SELECT.

Змінення записів у запиті. Інструкція UPDATE дозволяє змінювати значення в полях заданої таблиці і має такий

формат:

UPDATE <таблиця>

SET <нове значення>

WHERE <критерії>;

Наприклад, в таблиці ТАБЕЛЬ значення поля КІЛЬКІСТЬ ВІДПРАЦЬОВАНИХ ДНІВ збільшити на 2 у третьому місяці:

UPDATE ТАБЕЛЬ

SET [Кількість відпрацьованих днів]=[Кількість відпрацьованих днів]+2

WHERE [Місяць]=3

Створення складних запитів. Для виконання дій, які не можна реалізувати в одній інструкції, використовуються складні запити. Ці запити можуть містити декілька інструкцій SELECT або декілька речень FORM у середині інструкції SELECT.


Приклад 1. Визначити прізвища працівників, котрі мають оклад більший за середній. Інструкції запиту та результат виконання відображено на рис. 2.

 

Рис. 2. Інструкція запиту та результат виконання

Приклад 2. Визначити прізвище працівника, котрий мав максимальний оклад у першому місяці; додати у запит місяць та оклад. Інструкція буде мати такий вигляд:

SELECT Табель.Місяць, Працівники.Прізвище, Працівники.Оклад

FROM Працівники RIGHT JOIN Табель ON Працівники.[Табельний номер] = Табель.[Табельний номер] WHERE Табель.Місяць=1 AND Працівники.Оклад=(SELECT MAX(Оклад) FROM Працівники);

Контрольні питання

1. Для чого використовують агрегатні функції?

2. Як порахувати середнє значення у стовпчику?

3. Як знайти максимальне значення у стовпчику?

4. Що робить функція COUNT?

5. Що робить оператор GROUP?

6. Що робить оператор HAVING?

Завдання для тренування

Завадський ст..136

Date: 2015-12-11; view: 214; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.008 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию