-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathThucTap.sql
More file actions
151 lines (129 loc) · 3.1 KB
/
ThucTap.sql
File metadata and controls
151 lines (129 loc) · 3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
create database QLSV
go
create table Lop
(
Malop char(5) not null primary key,
TenLop char(10) not null,
Phong char(5) not null
)
create table SinhVien
(
MaSV char(5) not null primary key,
TenSV char(10) not null,
MaLop char(5) not null,
constraint fk_MaLop foreign key(MaLop) references Lop(MaLop)
)
insert into LOP values ( '1', 'CD', '1')
insert into LOP values ( '2', 'DH', '2')
insert into LOP values ( '3', 'LT', '2')
insert into LOP values ( '4', 'CH', '4')
insert into SinhVien values ( '1', 'A', '1')
insert into SinhVien values ( '2', 'B', '2')
insert into SinhVien values ( '3', 'C', '1')
insert into SinhVien values ( '4', 'D', '3')
-- Cau1
create function Cau1(@malop char(5))
returns int
as
begin
declare @sl int
select @sl = count(SinhVien.MaSV)
from SinhVien inner join Lop
on SinhVien.MaLop = Lop.Malop
where lop.Malop = @malop
group by lop.Malop
return @sl
end
select dbo.cau1('1')
-- Cau 2
create function Cau2(@tenlop char(10))
returns @danhsach table (masv char(5), tensv char(10))
as
begin
insert into @danhsach
select MaSV, TenSV
from SinhVien inner join lop
on SinhVien.MaLop = lop.Malop
where TenLop = @tenlop
return
end
select * from dbo.Cau2('CD')
-- Cau 4
create function Cau4(@tensv char(10))
returns char(10)
as
begin
declare @tenphong char(10)
select @tenphong = Lop.Phong
from SinhVien inner join Lop
on SinhVien.MaLop = Lop.Malop
where TenSV = @tensv
return @tenphong
end
select dbo.cau4('D')
-- Cau5
create function Cau5(@phong char(10))
returns @DS table (masv char(5), tensv char(10), tenlop char(5))
as
begin
insert into @DS
select MaSV, TenSV, TenLop
from SinhVien inner join Lop
on SinhVien.MaLop = Lop.Malop
where lop.Phong = @phong
return
end
select * from dbo.cau5('2')
create function Cau5_1(@phong varchar(20))
returns @cau5 table(maSV varchar(20), tenSV varchar(20), tenLop varchar(20))
as
begin
if(not exists(select phong from LOP where phong = @phong))
insert into @cau5
select SinhVien.maSV, SinhVien.tenSV, LOP.tenLop
from SinhVien inner join LOP on SinhVien.maLop = LOP.maLop
else
insert into @cau5
select SinhVien.maSV, SinhVien.tenSV, LOP.tenLop
from SinhVien inner join LOP on SinhVien.maLop = LOP.maLop
where LOP.phong = @phong
return
end
select * from dbo.Cau5_1('5')
-- Cau 3
create function Cau3(@tenlop char(10))
returns @thongke table(malop char(10), tenlop char(10), slsv int)
as
begin
if (not exists(select Malop from Lop where Lop.TenLop = @tenlop))
insert into @thongke
select lop.Malop,TenLop, count(SinhVien.MaSV)
from SinhVien inner join Lop
on SinhVien.MaLop = Lop.Malop
group by lop.Malop, TenLop
else
insert into @thongke
select lop.Malop,TenLop, count(SinhVien.MaSV)
from SinhVien inner join Lop
on SinhVien.MaLop = Lop.Malop
where TenLop = @tenlop
group by lop.Malop, TenLop
return
end
select * from dbo.Cau3('CX')
-- Cau6
create function Cau6(@phong char(10))
returns int
as
begin
if (not exists(select Phong from Lop where Lop.Phong = @phong))
return 0
else
declare @sl int
select @sl = count(lop.Malop)
from Lop
where lop.Phong = @phong
group by lop.Phong
return @sl
end
select dbo.cau6('4')