· 6 years ago · May 16, 2019, 05:14 PM
1--zadanie 28
2DROP TABLE IF EXISTS pacjenci
3go
4CREATE TABLE pacjenci (
5 id_pacjenta VARCHAR(7) PRIMARY KEY NOT NULL,
6 nazwisko VARCHAR(30),
7 data_ur DATETIME
8)
9go
10INSERT INTO pacjenci VALUES
11('A_1234', 'Kowalska', '19890201'),
12('A_3456', 'Nowak', '19910303'),
13('B_2111', 'Malicki', '19930505')
14go
15SELECT id_pacjenta, nazwisko, convert(varchar, data_ur, 111) as data_ur FROM pacjenci
16go
17DROP TABLE IF EXISTS lekarze
18go
19CREATE TABLE lekarze (
20 id_lekarza VARCHAR(7) PRIMARY KEY,
21 id_specjalizacji VARCHAR(7),
22 nr_gab INT
23)
24go
25INSERT INTO lekarze VALUES
26('P_12', 'p1', 23),
27('O_34', 'o1', 31),
28('S_90', 'S1', 40)
29go
30SELECT * FROM lekarze ORDER BY nr_gab
31go
32DROP TABLE IF EXISTS miasta
33go
34CREATE TABLE miasta(
35 nazwisko VARCHAR(30) PRIMARY KEY,
36 miasto VARCHAR(30)
37)
38go
39INSERT INTO miasta VALUES
40('Nowak', 'Gdansk'),
41('Kowalska', 'Gdansk'),
42('Malicki', 'Sopot')
43go
44SELECT * FROM miasta
45go
46DROP TABLE IF EXISTS wizyty
47go
48CREATE TABLE wizyty(
49 id_pacjenta VARCHAR(7),
50 data_wizyty DATETIME,
51 id_lekarza VARCHAR(7)
52)
53go
54INSERT INTO wizyty VALUES
55('A_3456', '20190421 18:00', 'S_90'),
56('A_1234', '20190513 14:50', 'O_34'),
57('B_2111', '20190603 15:00', 'S_90')
58go
59SELECT id_pacjenta, convert(varchar(16), data_wizyty, 20) as data_wizyty, id_lekarza FROM wizyty
60go
61------------------------------------
62DROP PROCEDURE IF EXISTS proc1
63go
64CREATE PROCEDURE proc1
65AS
66 SELECT nazwisko, convert(varchar(10), data_ur, 120) as data_ur, datediff(year, data_ur, getdate()) as wiek into #t_wiek from pacjenci
67 SELECT * from #t_wiek
68 SELECT nazwisko as 'Nazwisko osoby najstarszej' from #t_wiek where wiek=(select max(wiek) FROM #t_wiek)
69go
70exec proc1
71go
72------------------------------------
73DROP PROCEDURE IF EXISTS proc2
74go
75CREATE PROCEDURE proc2
76AS
77 SELECT miasto, convert(varchar(16), data_wizyty, 120) as data_wizyty, miasta.nazwisko from miasta
78 JOIN pacjenci ON
79 pacjenci.nazwisko=miasta.nazwisko
80 JOIN wizyty ON
81 pacjenci.id_pacjenta=wizyty.id_pacjenta
82 WHERE miasto='Gdansk'
83go
84exec proc2
85go
86------------------------------------
87DROP PROCEDURE IF EXISTS proc3
88go
89CREATE PROCEDURE proc3 @miasto varchar(30)
90AS
91 SELECT miasto, convert(varchar(16), data_wizyty, 120) as data_wizyty, miasta.nazwisko, wizyty.id_lekarza, id_specjalizacji from miasta
92 JOIN pacjenci ON
93 pacjenci.nazwisko=miasta.nazwisko
94 JOIN wizyty ON
95 pacjenci.id_pacjenta=wizyty.id_pacjenta
96 JOIN lekarze ON
97 lekarze.id_lekarza=wizyty.id_lekarza
98 WHERE miasto=@miasto
99go
100exec proc3 'Gdansk'
101go
102------------------------------------
103DROP PROCEDURE IF EXISTS proc4
104go
105CREATE PROCEDURE proc4 @miasto varchar(30)
106AS
107 SELECT miasto, convert(varchar(16), data_wizyty, 120) as data_wizyty, miasta.nazwisko, wizyty.id_lekarza, id_specjalizacji from miasta
108 JOIN pacjenci ON
109 pacjenci.nazwisko=miasta.nazwisko
110 JOIN wizyty ON
111 pacjenci.id_pacjenta=wizyty.id_pacjenta
112 JOIN lekarze ON
113 lekarze.id_lekarza=wizyty.id_lekarza
114 WHERE miasto!=@miasto
115go
116exec proc4 'Gdansk'
117go
118------------------------------------
119DROP PROCEDURE IF EXISTS proc5
120go
121CREATE PROCEDURE proc5 @nazwisko varchar(30)
122AS
123 SELECT nazwisko, convert(varchar(16), data_wizyty, 120) as data_wizyty, wizyty.id_lekarza, id_specjalizacji, nr_gab from wizyty
124 JOIN pacjenci ON
125 pacjenci.id_pacjenta=wizyty.id_pacjenta
126 JOIN lekarze ON
127 lekarze.id_lekarza=wizyty.id_lekarza
128 WHERE nazwisko=@nazwisko
129go
130exec proc5 'Nowak'
131go
132------------------------------------
133DROP PROCEDURE IF EXISTS proc6
134go
135CREATE PROCEDURE proc6
136AS
137 SELECT convert(varchar(16), data_wizyty, 120) as data_wizyty, wizyty.id_lekarza, id_specjalizacji, nr_gab, nazwisko FROM wizyty
138 JOIN pacjenci ON
139 pacjenci.id_pacjenta=wizyty.id_pacjenta
140 JOIN lekarze ON
141 lekarze.id_lekarza=wizyty.id_lekarza
142 WHERE convert(varchar, data_wizyty, 111)=convert(varchar, getdate(), 111)
143go
144exec proc6
145go