- •0927 – "Видавничо-поліграфічна справа" для магістрантів
- •0927 – "Видавничо-поліграфічна справа" для магістрантів
- •1 Вивчення метод і в збору та накопичення даних
- •1.5 Контрольні питання:
- •1.6 Літературні джерела:
- •1 Вивчення метод і в збору та накопичення даних
- •2.5 Контрольні питання:
- •2.6 Літературні джерела:
- •2 Вивчення методів пошуку та опрацювання даних
- •Завдання1. Пригадати синтаксис оператора select для вибірки даних.
- •Завдання 3. Створити вибірку за заданим критерієм з таблиці, яка є результатом злиття двох інших таблиць autors та titles бази даних publications. Порядок виконання завдання 3:
- •Завдання 4. Об’єднати три початкові таблиці authors, titles та publishers в одну результативну таблицю і створити вибірку до неї відповідно до заданого критерію. Порядок виконання завдання 4:
- •2 Вивчення методів пошуку та опрацювання даних
- •Завдання 3. Створити запит з розрахунком всередині інструкції Select.
- •4.6 Літературні джерела:
- •3 Вивчення методів оформлення наукових результатів
- •Завдання 2. Вивчити процедуру конкатенації даних – об’єднання стовпців.
- •Завдання 4. Вирішити функціональну задачу на основі складного запиту.
- •Завдання 5. Вивчити формат команд угруповування даних
- •Завдання 6. Вивчити формат команд сортування даних
- •3 Вивчення методів оформлення наукових результатів
- •0927 – "Видавничо-поліграфічна справа" для магістрантів
Завдання 4. Вирішити функціональну задачу на основі складного запиту.
Припустимо, що поставлена задача з’ясувати, службовцям якого відділу до-ручено працювати з клієнтом Telеcoм. Визначити шлях пошуку цієї інформації.
Порядок виконання завдання 4.
Оскільки відоме ім’я клієнта Telеcoм, то з таблиці клієнтів можна з’ясувати його ідентифікаційний номер clientID. Ідентифікаційним номером можна скористуватися, щоб знайти відповідне завдания в таблиці завдань і побачити, які службовці працювали з даним клієнтом.
Із таблиці завдань можна отримати ідентифікаційні номери службовців (employeelD), а по таблиці службовців можна з’ясувати номери відділів, в яких ці службовці працюють. З цією інформацією можна звернутися до таблиці відділів і знайти назву відповідного відділу.
Така послідовність дій, пов’язана з обробкою даних чотирьох таблиць, являє собою шлях пошуку необхідної інформації. Реалізувати такий запит можна командою:
select department.name
from client, assignment, employee, department
where client.name='Telеcoм'
and client.clientID = assignment.clientID
and assignment.employeelD = employee.employeelD
and employee.departmentID = department.departmentID;
Логіка виконання завдання передбачає: спочатку слід створити всі необхідні таблиці, а потім встановити умови об’єднання, котрі зв’яжуть ці таблиці між собою. В такому запиті використовується одна звичайна умова – client.name='Telеcom' – і три умови об’єднання. Для об’єднання n таблиць використовується (п – 1) умова об’єднання. Схема об’єднання таблиць для даного прикладу приведена на рис. 11.
Рис. 11 – Схема об’єднання чотирьох таблиць з трьома умовами злиття
Завдання 5. Вивчити формат команд угруповування даних
Угруповання даних в команді SELECT здійснюються за допомогою ключового слова GROUP BY і ключового слова HAVING. Останнім словом задаються умови розбивки записів на групи. GROUP BY нерозривно зв'язано з агрегируючими функціями, без них воно практично не використовується. GROUP BY розділяє таблицю на групи, а агрегируюча функція обчислює для кожної з них підсумкове значення.
Порядок виконання завдання 5:
Приклад 1. Визначити кількість книг кожного видавництва в базі даних publications командою:
SELECT publishers.publisher, COUNT(titles.title) FROM titles INNER JOIN publishers ON titles.pub_id=publishers.pub_id GROUP BY publisher;
Ключове слово HAVING діє у такий спосіб: спочатку пропозиція GROUP BY розбиває рядки на групи, потім на отримані набори рядків накладаються умови HAVING.
Приклад 2. Усунути з попереднього запиту видавництва, що мають тільки одну книгу:
SELECT publishers.publisher, COUNT(titles.title) FROM titles INNER
JOIN publishers ON titles.pub_id=publishers.pub_id GROUP BY publisher HAVING COUNT(titles.title)>1;
Приклад 3. Включити в результат використання HAVING тільки ті видавництва, назва яких закінчується на підрядок "Press":
SELECT publishers.publisher, COUNT(titles.title) FROM titles INNER JOIN publishers ON titles.pub_id=publishers.pub_id GROUP
BY publisher HAVING publisher LIKE '*Press';
Розходження між цими двома варіантами у використанні HAVING полягає у тому, що у другому варіанті умову відбору записів можна помістити в розділ пропозиції WHERE, а у першому ж варіанті цього зробити не можна, оскільки WHERE не допускає використання агрегируючих функцій.