Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра прикладної математики
та фундаментальних наук
Звіт
до лабораторної роботи №2
«РОБОТА З ЗАПИТАМИ В СУБД ACCESS»
Завдання:
задано предметну область:
Інформаційна система призначена для обліку товарів в невеликому магазині.
Кожен товар характеризується кодом, категорією, назвою, одиницями виміру, терміном зберігання, ціною закупки та ціною продажу. Товар приходить в магазин від постачальників, продається покупцям та може бути списаний на витрати. Інформаційна система повинна зберігати дані про всі такі операції з вказанням номеру документу, дати, постачальника чи отримувача товару, кількостей кожного товару що бере участь в операції. Система повинна відслідковувати також оплати постачальникам за поставлений товар та надходження оплат від покупців за проданий товар. Система не дозволяє продаж товару покупцям, борг яких перевищує 1000 гр.
В системі потрібно зберігати дані про постачальників та покупців : код, назву, адресу, категорію, процент знижки на ціни.
Система повинна забороняти продаж товару, якщо його немає в наявності.
Система повинна видавати звіти :
Список товарів певної категорії (параметр) з вказанням назви, обох цін та наявної кількості.
Список обігу товарів за певний період часу з вказанням назви, суми товару наявного на початок періоду, суми приходу толвару за період, суми продаж та списання товару за період, суми товару, наявного на кінець періоду. Підбивати підсумки по категоріях.
Список постачальників з вказанням всіх даних документів про прихід товару від них.
Виконання:
Вибірка даних:
Вивести список товарів певної категорії (параметр) з вказанням назви, обох цін та наявної кількості:
SELECT назва, ціна_закупки, ціна_продажу, кількість_товару
FROM товар
INNER JOIN категорія_товарів ON товар.ід_категорії_товару=категорія_товарів.ід_категорії
WHERE категорія_товарів.назва_категорії = ввести_категорію;
Наприклад:
Вводжу категорію товару «Взуття», вивід:
Список постачальників з вказанням всіх даних документів про прихід товару від них:
SELECT по.назва, по.адреса, доп.ід_документа_оплати, доп.дата, ооп.кількість_товару, товар.назва
FROM постачальник AS по, документи_оплати_постачальникам AS доп, операція_оплати_постачальникам AS ооп, товар
WHERE по.ід_постачальника=доп.ід_постачальника AND доп.ід_документа_оплати=ооп.ід_документа_оплати AND ооп.ід_товару=товар.ід_товару;
Наприклад:
Вивід:
Вивести дані про прихід товару за вказаний період (параметр):
SELECT товар.назва, товар.ціна_закупки, ооп.кількість_товару
FROM товар, операція_оплати_постачальникам AS ооп, документи_оплати_постачальникам AS доп
WHERE ооп.ід_товару=товар.ід_товару AND доп.ід_документа_оплати=ооп.ід_документа_оплати And доп.дата>=dateValue([початок періоду]) AND доп.дата<=dateValue([кінець періоду]);
Наприклад:
Вводжу: початкову дату «11.09.2007» та кінцеву дату «20.09.2007» , вивід:
Вивести дані по продажі та списанню товарів за вказаний період (параметр):
Запит збережений із назвою ‘суми продаж та списання товару за період’
SELECT дон.дата, товар.назва, он.кількість_товару, товар.ціна_продажу, 'Продано' AS Операція
FROM товар, операція_надходження AS он, документи_операції_надходження AS дон
WHERE товар.ід_товару=он.ід_товару AND он.ід_документа_надходження=дон.ід_документа_надходження AND дон.дата>=dateValue([введіть початок періоду]) AND дон.дата<=dateValue([введіть кінець періоду])
UNION ALL
SELECT дос.дата, товар.назва, ост.кількість_товару, товар.ціна_продажу, 'Списано' AS Операція
FROM товар, операція_списання_товару AS ост, документи_операції_списання AS дос
WHERE товар.ід_товару=ост.ід_товару AND ост.ід_документу_списання=дос.ід_документу_списання AND дос.дата>=dateValue([введіть початок періоду]) AND дос.дата<=dateValue([введіть кінець періоду])
ORDER BY 1;
Наприклад:
Вводжу: початкову дату «11.09.2007» та кінцеву дату «20.09.2007», вивід:
Вивести дані по продажі та списанню товарів за вказаний період по вказаній
категорії товарів (параметр):
SELECT темп.*, кт.назва_категорії AS категорія
FROM [суми продаж та списання товару за період] AS темп, товар, категорія_товарів AS кт
WHERE темп.назва=товар.назва AND товар.ід_категорії_товару=кт.ід_категорії AND кт.назва_категорії=[введіть назву категорії];
[суми продаж та списання товару за період] – запит, наведений в пункті 4
Наприклад:
Вказую початок періоду «11.09.2007» , кінець періоду «20.09.2007», назву категорії «Мобільний зв»язок», вивід:
Вставка даних
Вставити новий запис у таблицю «Категорія_товарів»
INSERT INTO категорія_товарів (назва_категорії)
VALUES ('Напої');
Отже, у таблицю «Категорія товарів» введено новий запис «Напої»
Оновлення даних
Збільшити ціну продажу на n (параметр) одиниць для всіх товарів із вказаної категорії (параметр)
UPDATE товар
SET ціна_продажу = ціна_продажу + [ціна]
WHERE товар.ід_категорії_товару IN (
SELECT ід_категорії
FROM категорія_товарів
WHERE назва_категорії = [Введіть назву категорії]
)
Видалення даних
Видалити товар за його назвою (параметр)
DELETE
FROM товар
WHERE товар.назва = Введіть_назву_товару;
Створення таблиць
Створення нової таблиці «Типи_товарів»
CREATE TABLE Типи_товарів
(ід_товару integer NOT NULL,
назва_типу VARCHAR(30),
UNIQUE (назва_типу),
PRIMARY KEY (ід_товару));
Висновок: на цій лабораторній роботі я навчилася створювати різні селект-запити (створювати таблиці, модифікувати дані, видаляти дані, вставляти дані, вибирати потрібну інформацію із бази даних.)