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

Tags: