· 6 years ago · Jan 14, 2020, 10:20 PM
1-- SKRYPT 1
2IF EXISTS (SELECT * FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'WYCHOWAWCA'))
3BEGIN
4PRINT 'Tabela WYCHOWAWCA już istnieje w bazie'
5END
6ELSE
7BEGIN
8create table WYCHOWAWCA(
9IDWYCH INT PRIMARY KEY NOT NULL,
10IMIE CHAR(30) NOT NULL,
11NAZWISKO CHAR(30) NOT NULL,
12WIEK INT NOT NULL
13)
14END
15
16IF EXISTS (SELECT * FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'PRZEDMIOT'))
17BEGIN
18PRINT 'Tabela PRZEDMIOT już istnieje w bazie'
19END
20ELSE
21BEGIN
22create table PRZEDMIOT(
23IDPRZ INT PRIMARY KEY NOT NULL,
24NAZWA CHAR(30) NOT NULL,
25SALA CHAR(5) NOT NULL
26)
27END
28
29IF EXISTS (SELECT * FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'KLASA'))
30BEGIN
31PRINT 'Tabela KLASA już istnieje w bazie'
32END
33ELSE
34BEGIN
35create table KLASA(
36IDKLASY INT PRIMARY KEY NOT NULL,
37NAZWA CHAR(30) NOT NULL,
38PROFIL CHAR(30) NOT NULL,
39IDWYCH INT REFERENCES WYCHOWAWCA(IDWYCH)
40)
41END
42
43IF EXISTS (SELECT * FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'KLA_PRZ'))
44BEGIN
45PRINT 'Tabela KLA_PRZ już istnieje w bazie'
46END
47ELSE
48BEGIN
49create table KLA_PRZ(
50IDKLASY INT NOT NULL REFERENCES KLASA(IDKLASY),
51IDPRZ INT NOT NULL REFERENCES PRZEDMIOT(IDPRZ)
52)
53END
54go
55
56INSERT INTO WYCHOWAWCA
57VALUES (1,'Jan','Kowalsky',25),(2,'Mariusz','Kolanko',60)
58INSERT INTO PRZEDMIOT
59VALUES (1,'Matematyka','101'),(2,'Fizyka','102')
60INSERT INTO KLASA
61VALUES (1,'1A','Mat-Fiz',1),(2,'1A','Mat-Fiz',1),(3,'3A','Mat-Fiz',1),(4,'1B','Mat-Geo',2),(5,'2B','Mat-Geo',2)
62INSERT INTO KLA_PRZ
63VALUES (1,1),(2,1),(3,2),(4,2),(5,1)
64GO
65
66
67
68CREATE RULE WIEK AS @RANGE>=15
69GO
70EXEC SP_BINDRULE WIEK,'WYCHOWAWCA.WIEK'
71GO
72
73
74CREATE FUNCTION SKALARNA (@IDKLASY INT)
75RETURNS NVARCHAR(100)
76AS
77BEGIN
78 DECLARE @WYJSCIE NVARCHAR(100)
79 SELECT @WYJSCIE = NAZWA+','+PROFIL+','+W.NAZWISKO+','+CONVERT(NVARCHAR,W.WIEK)
80 FROM KLASA AS K JOIN WYCHOWAWCA W ON W.IDWYCH=K.IDWYCH
81 WHERE IDKLASY=@IDKLASY
82 RETURN (@WYJSCIE)
83END
84GO
85
86--SELECT DBO.SKALARNA(1)
87
88
89
90CREATE FUNCTION TABELARNA (@IDKLASY INT)
91RETURNS TABLE
92AS
93 RETURN(SELECT P.SALA,P.NAZWA FROM KLASA K JOIN KLA_PRZ ON KLA_PRZ.IDKLASY=K.IDKLASY JOIN PRZEDMIOT P ON P.IDPRZ=KLA_PRZ.IDPRZ WHERE K.IDKLASY=@IDKLASY)
94GO
95
96--SELECT * FROM dbo.TABELARNA(1)
97
98
99
100CREATE VIEW WIDOK_WYCHO
101AS
102SELECT W.NAZWISKO,W.IMIE,K.NAZWA FROM WYCHOWAWCA W JOIN KLASA K ON K.IDKLASY=W.IDWYCH
103GO
104--SELECT * FROM WIDOK_WYCHO ORDER BY NAZWISKO DESC
105
106SELECT COUNT(*) FROM (SELECT DISTINCT KLA_PRZ.IDPRZ FROM KLA_PRZ JOIN KLASA ON KLASA.IDKLASY = KLA_PRZ.IDKLASY WHERE KLA_PRZ.IDKLASY=KLASA.IDKLASY)as ile--ŹLE