Prześlij pliki do 'Księgarnia.sql'

This commit is contained in:
Arkadiusz Charliński 2022-02-28 02:59:47 +01:00
parent 653cd2cdeb
commit d282556ab1
1 changed files with 207 additions and 0 deletions

View File

@ -0,0 +1,207 @@
/*
===================================================
KONCEPCJA PROJEKTU BAZY DANYCH
===================================================
---------------------------------------------------
1. Nazwa bazy danych:
---------------------------------------------------
- Ksiegarnia
---------------------------------------------------
2. Nazwa tabeli transakcyjnej
---------------------------------------------------
- sprzedaż - rejestracja sprzedarzy oraz wysyłek
(id_sprzedazy, id_klienta, status[czeka,wysłana,dostarczona], łączny_koszt)
---------------------------------------------------
3. Nazwy pozostałych tabel (co najmniej czterech):
----------------------------------------------------
- Kupujący (id_klienta, imie, miasto, nazwisko, ulica, nr domu, kod pocztowy)
- Książki(id_książki, tytuł, gatunek, ilosc stron, autor, ilość sztuk w magazynie, cena)
- sprzedane_książki(id_sprzedazy, id_klienta, id_książki)
-----------------------------------------------------------------
4. Nazwy pięciu raportów zbudowanych na tabeli transakcyjnej
------------------------------------------------------------------
*/
USE master
GO
if DB_ID('Ksiegarnia') IS NULL
CREATE DATABASE Ksiegarnia
GO
USE Ksiegarnia
IF OBJECT_ID('sprzedane_ksiazki') IS NOT NULL
DROP TABLE sprzedane_ksiazki
IF OBJECT_ID('ksiazki') IS NOT NULL
DROP TABLE ksiazki
IF OBJECT_ID('sprzedaz') IS NOT NULL
DROP TABLE sprzedaz
IF OBJECT_ID('kupujacy') IS NOT NULL
DROP TABLE kupujacy
IF OBJECT_ID('kupujacy') IS NULL
CREATE TABLE kupujacy(
id_klienta INT IDENTITY(1,1) PRIMARY KEY,
imie VARCHAR(20),
nazwisko VARCHAR(20),
miasto VARCHAR(20),
ulica VARCHAR(20),
nr_domu INT,
kod_pocztowy VARCHAR(6)
)
IF OBJECT_ID('sprzedaz') IS NULL
CREATE TABLE sprzedaz(
id_sprzedazy INT IDENTITY(1,1) PRIMARY KEY,
id_klienta INT FOREIGN KEY REFERENCES kupujacy(id_klienta),
status_wysylki VARCHAR(11) CHECK(status_wysylki in ('czeka','wyslana','dostarczona')),
data_sprzedania DATE
)
IF OBJECT_ID('ksiazki') IS NULL
CREATE TABLE ksiazki(
id_ksiazki INT IDENTITY(1,1) PRIMARY KEY ,
tytul VARCHAR(20),
gatunek VARCHAR(30),
autor VARCHAR(30),
ile_w_magazynie INT,
cena INT
)
IF OBJECT_ID('sprzedane_ksiazki') IS NULL
CREATE TABLE sprzedane_ksiazki(
id_sprzedazy INT FOREIGN KEY REFERENCES kupujacy(id_klienta),
id_ksiazki INT FOREIGN KEY REFERENCES ksiazki(id_ksiazki),
ile_sztuk INT,
)
INSERT INTO kupujacy (imie, nazwisko, miasto, ulica, nr_domu, kod_pocztowy) VALUES
('Roman','Makłowicz','Lublin','Szkolna',17,'21-102'),
('Robert','Lewandowski','Warszawa','Kwiatowa',12,'45-100'),
('Renata','Nowak','Poznań','Wojaka',42, '21-241'),
('Kamil', 'Stary','Warszawa','Harnasia',89,'12-875'),
('Stachu', 'Stach','Wrocław','Jana Pawła II',2,'53-023'),
('Justyna', 'Zeszyt','Warszawa','Wyzwolenia',123,'21-370'),
('Maciej', 'Nowak','Gdańsk','Półwiejska',232,'23-689'),
('Jakub', 'Kaczor', 'Kraków','Wrocławska',897,'89-898'),
('Bartosz','Pawlik','Poznań','Polska',34, '25-567'),
('Roman','Makłowicz','Lublin','Szkolna',17,'21-102'),
('Robert','Lewandowski','Warszawa','Kwiatowa',12,'45-100'),
('Renata','Nowak','Poznań','Wojaka',42, '21-241'),
('Kamil', 'Stary','Warszawa','Harnasia',89,'12-875'),
('Stachu', 'Stach','Wrocław','Jana Pawła II',2,'53-023'),
('Justyna', 'Zeszyt','Warszawa','Wyzwolenia',123,'21-370'),
('Maciej', 'Nowak','Gdańsk','Półwiejska',232,'23-689'),
('Jakub', 'Kaczor', 'Kraków','Wrocławska',897,'89-898'),
('Bartosz','Pawlik','Poznań','Polska',34, '25-567'),
('Roman','Makłowicz','Lublin','Szkolna',17,'21-102'),
('Robert','Lewandowski','Warszawa','Kwiatowa',12,'45-100'),
('Renata','Nowak','Poznań','Wojaka',42, '21-241'),
('Kamil', 'Stary','Warszawa','Harnasia',89,'12-875'),
('Stachu', 'Stach','Wrocław','Jana Pawła II',2,'53-023'),
('Justyna', 'Zeszyt','Warszawa','Wyzwolenia',123,'21-370'),
('Maciej', 'Nowak','Gdańsk','Półwiejska',232,'23-689'),
('Jakub', 'Kaczor', 'Kraków','Wrocławska',897,'89-898'),
('Bartosz','Pawlik','Poznań','Polska',34, '25-567')
INSERT INTO sprzedaz(id_klienta, status_wysylki, data_sprzedania) VALUES
(1, 'czeka','2022-01-31'),
(5, 'dostarczona','2022-01-31'),
(7, 'wyslana','2022-01-31'),
(2, 'czeka','2022-01-23'),
(3, 'dostarczona','2022-01-29'),
(6, 'wyslana','2022-02-28'),
(1, 'czeka','2022-01-31'),
(5, 'dostarczona','2022-01-31'),
(7, 'wyslana','2022-01-31'),
(2, 'czeka','2022-01-23'),
(3, 'dostarczona','2022-01-29'),
(6, 'wyslana','2022-02-28')
INSERT INTO ksiazki(tytul, gatunek, autor, ile_w_magazynie, cena) VALUES
('System operacyjne', 'Nauka i technika', 'William Stallings', 50,79.99),
('Lśnienie', 'Horror', 'Stephen King', 272, 12.99),
('Pamięć nieulotna', 'Autobiografia', 'Edward Snowden', 87, 39.99),
('Metro 2033', 'sci-fy', 'Dimytry Glukhovsky', 52, 29.99),
('Uciekinier', 'Horror', 'Stephen King', 126, 15.99),
('Prymityw', 'Autobiografia','Jarosław Komputer', 666, 9.99)
INSERT INTO sprzedane_ksiazki(id_sprzedazy, id_ksiazki, ile_sztuk) VALUES
(2,2,2),
(2,3,1),
(2,1,1),
(1,3,1),
(3,2,1),
(4,4,1),
(5,3,4),
(5,5,3),
(6,5,1),
(2,2,2),
(2,3,1),
(2,1,1),
(1,3,1),
(3,2,1),
(4,4,1),
(5,3,4),
(5,5,3),
(6,5,1),
(2,2,2),
(2,3,1),
(2,1,1),
(1,3,1),
(3,2,1),
(4,4,1),
(5,3,4),
(5,5,3),
(6,5,1)
IF OBJECT_ID('filtr_gatunki','P') IS NOT NULL
DROP PROCEDURE filtr_gatunki
GO
CREATE PROCEDURE filtr_gatunki (@gatunek VARCHAR(30)) AS
SELECT tytul, autor FROM ksiazki
WHERE gatunek = @gatunek
GO
EXEC filtr_gatunki Autobiografia
IF OBJECT_ID('szczeguly_klienta','P') IS NOT NULL
DROP PROCEDURE szczeguly_klienta
GO
CREATE PROCEDURE szczeguly_klienta (@nazwisko VARCHAR(20), @imie VARCHAR(20)) AS
SELECT kupujacy.*, ksiazki.tytul, sprzedaz.data_sprzedania, sprzedaz.status_wysylki, sprzedane_ksiazki.ile_sztuk FROM kupujacy
INNER JOIN sprzedaz ON kupujacy.id_klienta = sprzedaz.id_klienta
INNER JOIN sprzedane_ksiazki ON sprzedane_ksiazki.id_sprzedazy = sprzedaz.id_sprzedazy
INNER JOIN ksiazki ON ksiazki.id_ksiazki = sprzedane_ksiazki.id_ksiazki
WHERE nazwisko = @nazwisko AND imie = @imie
GO
EXEC szczeguly_klienta Nowak, Maciej
IF OBJECT_ID('bestselery','V') IS NOT NULL
DROP PROCEDURE bestselery
GO
SELECT DISTINCT TOP 5 ksiazki.tytul, SUM(sprzedane_ksiazki.ile_sztuk) AS ilosc_sprzedanych_ksiazek FROM ksiazki
INNER JOIN sprzedane_ksiazki ON ksiazki.id_ksiazki = sprzedane_ksiazki.id_ksiazki
GROUP BY tytul
ORDER BY ilosc_sprzedanych_ksiazek DESC