/* =================================================== 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