Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Access i SQL.doc
Скачиваний:
18
Добавлен:
07.02.2016
Размер:
1.2 Mб
Скачать

5.1.3 Розділ where

Тут вказується логічна умова, від виконання якої залежить чи ввійде запис до вибірки. Можна вказати декілька умов, об’єднаних логічними операторами AND, OR або іншими. WHERE в невеликих запитах може замінити конструкцію INNER JOIN, але це суттєво зменшує швидкість виконання запиту.

Задача 5.5. Вивести перелік заробітків, які знаходяться в межах від 30 грн. до 50 грн. (див. задачу 2.2)

SELECT tvidom.tn, tvidom.fio, tzarobitok.dat, tzarobitok.zar

FROM tvidom INNER JOIN tzarobitok

ON tvidom.tn = tzarobitok.tn

WHERE (((tzarobitok.zar)>=30 And (tzarobitok.zar)<=50)) ;

Задача 5.6. Створити запит про заробітки, які були нараховані в певному місяці. Номер місяця вводити як параметр.

PARAMETERS [Введіть номер місяця] Short ;

SELECT tvidom.tn, tvidom.fio, tzarobitok.dat, tzarobitok.zar

FROM tvidom INNER JOIN tzarobitok

ON tvidom.tn = tzarobitok.tn

WHERE (((Month([tzarobitok]![dat]))=[Введіть номер місяця]))

ORDER BY tzarobitok.dat;

Тип параметру вказують після службового слова PARAMETERS.

5.1.4 Розділ group by

Він використовується для підсумкових запитів В списку полів розділу SELECT без змін дозволяється використовувати імена тільки тих полів, які входять до розділу GROUP BY. Усі інші поля повинні бути використані як аргументи підсумкових функцій AVG(), MAX(), MIN(), SUM(), COUNT() або інших.

Задача 5.7. Створити запит про заробітки всіх робітників. Ця інструкція відповідає запиту для задачі 3.1.

SELECT tvidom.tn, tvidom.fio, Sum(tzarobitok.zar) AS [Усього],

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

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

GROUP BY tvidom.tn, tvidom.fio;

5.1.5 Розділ having

Він дуже схожий на розділ WHERE. В них однакові правила за­пису логічних умов. Але умови, задані в розділі WHERE, перевіряють­ся для окремих записів перед угрупованням, а умови розділу HAVING перевіряються для груп записів після угруповання стовпців, вказаних в розділі GROUP BY і звичайно містять підсумкові функції.

Задача 5.8. Створити запит про заробітки тих робітників, які заробили більше 200 грн. (див. задачу 3.2)

SELECT tvidom.tn, tvidom.fio, Sum(tzarobitok.zar) AS [Усього]

FROM tvidom INNER JOIN tzarobitok

ON tvidom.tn = tzarobitok.tn

GROUP BY tvidom.tn, tvidom.fio

HAVING (((Sum(tzarobitok.zar))>200))

ORDER BY tvidom.fio;

Задача 5.9. Для кожного робітника підрахувати кількість днів, коли їхні заробітки становили більше 40 грн. (див. задачу 3.3)

SELECT tvidom.fio, Count(tzarobitok.zar) as [Кількість днів]

FROM tvidom INNER JOIN tzarobitok

ON tvidom.tn = tzarobitok.tn

WHERE (((tzarobitok.zar)>40))

GROUP BY tvidom.fio

ORDER BY tvidom.fio;

5.1.6 Розділ order by

В цьому розділі вказуються імена полів або їх номери в списку полів даного запиту (нумерація починається з 1). За замовчанням вста­новлений порядок сортування за зростанням (ASC). Для сортування за зменшенням використовується службове слово DESC.

5.1.7 Оператор 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 [Підрозділ], [Прізвище] ;

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