· 6 years ago · Mar 06, 2019, 12:40 AM
1DROP TABLE IF EXISTS [Koszyk]
2
3DROP TABLE IF EXISTS [Towar]
4
5DROP TABLE IF EXISTS [Zakup]
6
7DROP TABLE IF EXISTS [Kilent]
8
9
10CREATE TABLE [Kilent] (
11 id INT PRIMARY KEY IDENTITY(1,1),
12 imie VARCHAR(20) NOT NULL,
13 nazwisko VARCHAR(30) NOT NULL
14)
15
16
17CREATE TABLE [Towar] (
18 id INT PRIMARY KEY IDENTITY(1,1),
19 nazwa VARCHAR(30) UNIQUE NOT NULL,
20 opis TEXT NOT NULL,
21 ilosc_sztuk INT,
22 cena_netto MONEY NOT NULL,
23 podatek MONEY
24)
25
26
27CREATE TABLE [Zakup] (
28 id INT PRIMARY KEY IDENTITY(1,1),
29 klient_id INT FOREIGN KEY REFERENCES [Kilent] (id),
30 data_zakupu DATETIME NOT NULL
31)
32
33CREATE TABLE [Koszyk] (
34 id INT PRIMARY KEY IDENTITY(1,1),
35 zakup_id INT FOREIGN KEY REFERENCES [Zakup] (id),
36 towar_id INT FOREIGN KEY REFERENCES [Towar] (id),
37 ilosc INT,
38 cena_netto MONEY,
39 podatek MONEY
40)
41
42INSERT INTO [Kilent] VALUES
43 ('Jakub', 'Silded'),
44 ('Marcinek', 'Ruszniekiewcz'),
45 ('Piter', 'Rutkewsci'),
46 ('Krzysiu', 'Kononowicz')
47
48
49INSERT INTO [Towar] VALUES
50 ('Szprota', 'Prosto z morza', 40, 2.50, 0.38),
51 ('Karp', 'Idealny na swieta', 10, 7.50, 0.99),
52 ('Szczupak', 'Grozny drapieznik', 5, 15.00, 2.32),
53 ('Okon', 'Ostry jak brzytwa', 100, 5.20, 0.15),
54 ('Lin', 'Dodaj a', 25, 3.80, 0.76)
55
56
57INSERT INTO [Zakup] VALUES
58 (2, GETDATE()),
59 (4, GETDATE()),
60 (3, GETDATE()),
61 (4, GETDATE())
62
63INSERT INTO [Koszyk] (zakup_id, towar_id, ilosc) VALUES
64 (1, 3, 20),(2,2,10),(1,1,30)
65
66drop proc dbo.sprzedaj
67
68create proc sprzedaj(@ilosc int,@idTowaru int ,@idKilent int)
69as
70BEGIN
71declare @a int;
72declare @b int;
73set @a=(SELECT ilosc_sztuk from Towar where id=@idTowaru)
74set @b=@a-@ilosc
75 if @ilosc > @a
76 BEGIN
77 print 'w bazie istnieje za mala ilosc towaru , ilosc ktora mozesz kupic to : '+ cast(@a as varchar)
78 END
79 ELSE
80 BEGIN
81 update Towar set ilosc_sztuk=@b where id=@idTowaru
82 END
83END
84
85
86select * from Towar
87
88exec dbo.sprzedaj 7,2,1
89
90SELECT * from Towar
91
92
93drop view klient_statystyki
94
95CREATE VIEW klient_statystyki
96as
97SELECT Kilent.id,Kilent.imie, Kilent.nazwisko, count(*) as ilosc_zakupow_suma, sum(Koszyk.ilosc*(Towar.cena_netto+(Towar.cena_netto*(Towar.podatek/100)))) as Suma from Koszyk
98inner JOIN Zakup on Koszyk.zakup_id = Zakup.id
99inner JOIN Towar on Koszyk.towar_id = Towar.id
100inner join Kilent on Kilent.id=Zakup.klient_id
101GROUP by zakup_id, Kilent.id,Kilent.imie,Kilent.nazwisko
102
103SELECT * from klient_statystyki
104
105SELECT * from Koszyk
106inner JOIN Zakup on Koszyk.zakup_id = Zakup.id
107inner JOIN Towar on Koszyk.towar_id = Towar.id
108inner join Kilent on Kilent.id=Zakup.klient_id