btcsdl
Bài 2: Cho lược đồ toàn cục sau:
Bộ môn ( maBM, tenBM, tenkhoa)
Giảng viên ( maGV, tenGV, phai, tuoi, diachi, maBM)
Môn học ( maMH, tenMH, maBM, sotiet)
Đề án ( maDA, tenDA, maGV, ketqua)
Dạy (maMH, maGV)
Các biểu thức phân mảnh: ( |>< : phép kết nối trái)
· Bộ môn phân mảnh theo các mảnh ứng với K1,K2 của tenkhoa
BM1 = d tenkhoa=K1 Bộ_môn
BM2 = dtenkhoa=K2 Bộ_môn
· Môn học, giảng viên phân mảnh theo maBM
MH1 = Môn_học |>< BM1
MH2 = Môn_học |>< BM2
GV1 = Giảng_viên |>< BM1
GV2 = Giảng_viên |>< BM2
· Đề án, dạy phân mảnh theo maGV
DA1 = Đề_án |>< GV1
DA2 = Đề_án |>< GV2
DAY1 = Dạy |>< GV1
DAY2 = Dạy |>< GV2
Câu lệnh SQL 2 mức:
Nhập maBM gán cho biến @maBM, cho biết maMH, tenMH của maMH thuộc bộ môn này mà chưa có giảng viên nào dạy
- trong suốt phân đoạn:
Create proc sp_1 @maBM
As
Select maMH,tenMH from Monhoc
Where maBM=@maBM and maMH not in (select maMH from Day)
- trong suốt định vị:
Create proc sp_1 @maBM
As
begin
If exists (Select maMH,tenMH from MH1
Where maBM=@maBM and
maMH not in ((select maMH from DAY1) union (select maMH from DAY2))
Then Select maMH,tenMH from MH1
Where maBM=@maBM and
maMH not in ((select maMH from DAY1) union (select maMH from DAY2))
Else Select maMH,tenMH from MH2
Where maBM=@maBM and
maMH not in ((select maMH from DAY1) union (select maMH from DAY2))
End
Đưa ra maBM, tenBM của các bộ môn có giảng viên phái nam và các giảng viên này không dạy bất kỳ môn học nào
- trong suốt phân đoạn
Select maBM, tenBM from Bomon, Giangvien
Where Bomon.maBM=Giangvien.maBM
and Giangvien.phai=”nam”
and Giangvien.maGV not in (select maGV from Day)
- trong suốt định vị
If exists (Select maBM, tenBM from BM1,GV1
Where BM1.maBM=GV1.maBM
and GV1.phai=”nam”
and GV.maGV not in ((select maGV from DAY1) union (select maGV from DAY2))
then begin
Select maBM, tenBM from BM1,GV1
Where BM1.maBM=GV1.maBM
and GV1.phai=”nam”
and GV1.maGV not in ((select maGV from DAY1) union (select maGV from DAY2))
end
else
Select maBM, tenBM from BM2,GV2
Where BM2.maBM=GV2.maBM
and GV2.phai=”nam”
and GV2.maGV not in ((select maGV from DAY1) union (select maGV from DAY2))
Nhập maGV gán cho biến @maGV, đưa ra maDA, tenDA của các đề án do giảng viên này thực hiện và có kết quả là “tốt”
- trong suốt phân đoạn
Create proc sp_2 @maGV
As
Select maDA,tenDA from DeAn
Where maGV= @maGV and ketqua=”tot”
- trong suốt định vị
Create proc sp_2 @maGV
As
If exists (Select maDA,tenDA from DA1
Where maGV= @maGV and ketqua=”tot”)
Then Select maDA,tenDA from DA1
Where maGV= @maGV and ketqua=”tot”)
else
Select maDA,tenDA from DA2
Where maGV= @maGV and ketqua=”tot”
Nhập maBM lưu vào biến @maBM, đưa ra maDA, tenDA của các dề án do giảng viên bộ môn này thực hiện
- trong suốt phân đoạn
Create proc sp_3 @maBM
As
Select maDA,tenDA from DeAn
Where maGV in (select maGV from Giangvien Where maBM=@maBM)
- trong suốt định vị
Create proc sp_3 @maBM
As
Begin
If exists ( Select maDA,tenDA from DA1
Where maGV in (select maGV from GV1 Where maBM=@maBM)
Then Select maDA,tenDA from DA1
Where maGV in (select maGV from GV1 Where maBM=@maBM)
else
Select maDA,tenDA from DA2
Where maGV in (select maGV from GV2 Where maBM=@maBM)
Nhập tenBM lưu vào biến @tenBM, đưa ra maGV, tenGV thuộc bộ môn này có tuổi > 50
- trong suốt phân đoạn
Create proc sp_4 @tenBM
As
Select maGV,tenGV from Giangvien
Where tuoi>50
and maBM in (Select maBM from Giangvien Where tenBM=@tenBM)
- trong suốt định vị
Create proc sp_4 @tenBM
As
If exists ( Select maGV,tenGV from GV1
Where tuoi>50
and maBM in (Select maBM from GV1
Where tenBM=@tenBM))
Then Select maGV,tenGV from GV1
Where tuoi>50
and maBM in (Select maBM from GV1
Where tenBM=@tenBM)
else
Select maGV,tenGV from GV2
Where tuoi>50
and maBM in (Select maBM from GV2
Where tenBM=@tenBM))
Đưa ra maGV, tenGV có tuổi lớn nhất so với các giảng viên khác trong cùng bộ môn
- trong suốt phân đoạn:
Select maGV,tenGV from Giangvien
Where tuoi in ( select max(tuoi) from Giangvien)
Group by maBM
- trong suốt định vị
(Select maGV,tenGV from GV1
Where tuoi in ( select max(tuoi) from GV1)
Group by maBM)
Union
(Select maGV,tenGV from GV2
Where tuoi in ( select max(tuoi) from GV2)
Group by maBM)
Nhập maBM lưu vào biến @maBM, có bao nhiêu môn học khác nhau mà các giáo viên của bộ môn này đã dạy
Create proc sp_5 @maBM
As
Select count( maMH ) as “so mon hoc” from Day
Where maGV in (Select maGV from Giangvien Where maBM=@maBM)
- trong suốt định vị
Create proc sp_5 @maBM
As
If exists ( Select maGV, count( maMH ) as “so mon hoc” from DAY1
Where maGV in (Select maGV from GV1
Where maBM=@maBM)
Group by maGV
)
Then Select maGV, count( maMH ) as “so mon hoc” from DAY1
Where maGV in (Select maGV from GV1
Where maBM=@maBM)
Group by maGV
else
Select maGV, count( maMH ) as “so mon hoc” from DAY2
Where maGV in (Select maGV from GV2
Where maBM=@maBM)
Group by maGV
Đưa ra maBM, tenBM, số lượng môn học của mỗi bộ môn mà số lượng môn học >= 5
- trong suốt phân đoạn
Select Bomon.maBM, Bomon.tenBM, count( Monhoc.maMH ) as “so mon hoc”
from Bomon, Monhoc
Where Bomon.maBM=Monhoc.maBM
Group by Monhoc.maBM
Having Count( Monhhoc.maMH) >= 5
- trong suốt định vị
If exists ( Select BM1.maBM, BM1.tenBm, count( MH1.maMH ) as “so mon hoc”
from BM1, MH1
Where BM1.maBM=MH1.maBM
Group by MH1.maBM
Having Count( MH1.maMH) >= 5
)
Then Select BM1.maBM, BM1.tenBm, count( MH1.maMH ) as “so mon hoc”
from BM1, MH1
Where BM1.maBM=MH1.maBM
Group by MH1.maBM
Having Count( MH1.maMH) >= 5
else
Select BM2.maBM, BM2.tenBm, count( MH2.maMH ) as “so mon hoc”
from BM2, MH2
Where BM2.maBM=MH2.maBM
Group by MH2.maBM
Having Count( MH2.maMH) >= 5
Bạn đang đọc truyện trên: AzTruyen.Top