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

Вправа 9.3. Оновлення поля таблиці обчислюваним значенням

Розглянемо формування запиту на оновлення з використанням виразу на прикладі заповнення поля ГОДИНИ для лекційних занять в таблиці ВИВЧЕННЯ. Хай оновлення поля ГОДИНИ повинне проводитися за допомогою даних, обчислюваних на основі полів ЛЕК (годинник лекцій) і ЧС (число семестрів) з таблиці ПРЕДМЕТ. Розрахункове число годин по лекціях визначимо по формулі ЛЕК/ЧС.

Відповідно до задачі в записах лекційних занять таблиці ВИВЧЕННЯ необхідне відновити поле ГОДИНИ розрахунковим числом годин. Вибрати записи про лекційні заняття можна по значенню поля ВИДЗ цієї таблиці, оскільки в ньому вказаний вид заняття. Дані для розрахунку середнього числа годин містяться в таблиці ПРЕДМЕТ. Таким чином, запит повинен будуватися на основі таблиць ВИВЧЕННЯ і ПРЕДМЕТ.

  1. Створіть запит на вибірку на основі таблиць ВИВЧЕННЯ і ПРЕДМЕТ.

  2. Перетворіть його в запит на оновлення, натискуючи відповідну кнопку на панелі інструментів.

  1. Включіть в бланк запиту поле, що обновляється, ГОДИНИ таблиці ВИВЧЕННЯ. В рядку Оновлення (Update Query) для цього поля введіть вираз [ЛЕК]/[ЧС]. Імена полів обов'язково укладайте в квадратні дужки.

  2. Для відбору в таблиці ВИВЧЕННЯ записів, що обновляються, про лекційні заняття в бланк запиту включіть поле ВИДЗ і вкажіть в рядку Умову відбору (Criteria) значення — лек.

  3. Виконайте запит, натиснувши кнопку Запуск (Run) або за допомогою команди Запит | Запуск (Query | Run). В діалоговому вікні з'явиться повідомлення про число записів, що обновляються.

  4. Прогляньте вміст поля ГОДИНИ до і після оновлення, натискуючи кнопку Вид (View).

  5. Щоб бачити результати оновлення в таблиці ВИВЧЕННЯ, відкрийте її одночасно із запитом.

При використовуванні в запиті на оновлення таблиць, що знаходяться відносно 1:M, обновляти можна тільки вміст стовпців таблиці із сторони "багато".

Вправа 9.4. Оновлення декількох полів таблиці

В базі даних є дві таблиці: ТОВАР з довідковими відомостями про кожне з товарів, у тому числі про його відпускну ціну (ЦІНА), і ВІДВАНТАЖЕННЯ, що містить відомості про кількість (КІЛ), ціну (ЦІНА_ОД) і вартість (ВАРТІСТЬ) відвантаженого товару. Таблиці знаходяться відносно 1:М, тобто по кожному товару проводилося декілька відвантажень, і між ними встановлений зв'язок по полю КОД_ТОВАРА. Припустимо, що змінилася ціна товару і необхідно в таблиці ВІДВАНТАЖЕННЯ в кожному записі із заданим кодом товару змінити ціну і підрахувати нову вартість відвантаженого.

  1. Створіть запит на оновлення на основі двох таблиць: таблиці, що обновляється, ВІДВАНТАЖЕННЯ і таблиці ТОВАР, з якої вибирається нова ціна для розрахунку вартості відвантаженого товару.

  2. Включіть в бланк запиту з таблиці ВІДВАНТАЖЕННЯ поля, що обновляються, ВАРТІСТЬ і ЦІНА. В рядок Оновлення (Update То) поля ВАРТІСТЬ введіть обчислюваний вираз [ЦІНА]*[ВІДВАНТАЖЕНО], визначальне його нове значення. Вираз можна створити за допомогою будівника виразів. В рядок Оновлення (Update То) поля ЦІНА_ОД ім'я поля [ЦІНА].

Зауваження

Значення, привласнювані полям таблиці, повинні бути сумісні з властивостями і накладеними обмеженнями на їх значення. Крім того, вони не повинні приводити до порушення цілісності даних. Інакше запит виконуватися не буде.

  1. Для відбору записів, що обновляються, включіть в бланк запиту поле КОД-ТОВАРУ і введіть в рядок Умову відбору параметр [Код товару].

  2. Виконайте запит. Введіть значення параметра Код товару відповідно до тих, що є в таблиці.

  3. В діалоговому вікні з повідомленням про число записів, що обновляються, і питанням про продовження операції оновлення натисніть кнопку ОК.

  4. Перейдіть в режим SQL. Еквівалентна запиту на оновлення інструкція UPDATE буде записана таким чином:

UPDATE ТОВАР INNER JOIN ВІДВАНТАЖЕННЯ ON

ТОВАР.КОД_ТОВАРУ = ВІДВАНТАЖЕННЯ.КОД_ТОВАРУ

SET ВІДВАНТАЖЕННЯ.ВАРТІСТЬ = [ЦІНА]*[ВІДВАНТАЖЕНО]

ВІДВАНТАЖЕННЯ.ЦІНА_ОД = [ЦІНА]

WHERE (((ТОВАР.КОД_ТОВАРУ)=[Код товару]));

Інструкція UPDATE обновляє вказані в пропозиції set поля (ВІДВАНТАЖЕННЯ.ВАРТІСТЬ, ВІДВАНТАЖЕННЯ.ЦІНА_ОД), привласнюючи значення заданих виразів ([ЦІНА]*[ВІДВАНТАЖЕНО] [ЦІНА]) у всіх записах, які задовольняють умові відбору, заданій в пропозиції where. Імена таблиць, що використовуються в запиті, і спосіб їх об'єднання задаються безпосередньо за ім'ям інструкції update.

Додавання даних з іншої таблиці

За допомогою Запиту на додавання (Append Query) проводиться додавання записів з таблиці з результатами запиту в таблицю бази даних. Тому в запиті повинні бути сформовані записи з полями, відповідними полям в доповнюваній записами таблиці бази даних.

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