Ai rành về truy vấn trong SQL giúp mình giải cái đề này với.
Đề:(2 điểm)
Khách(
mã khách, họ tên, địa chỉ)
Thuê bao(
số thuê bao, ngày lắp đặt, mã khách)
Dịch vụ(
mã dịch vụ, tên dịch vụ, đơn giá)
Đăng kí dịch vụ(
số thuê bao, mã dịch vụ)
cuộc gọi(
mã cuộc gọi, thời gian bắt đầu, thời gian kết thút, số thuê bao, mã dịch vụ)
a\- Hãy cho biết khách hàng 'Lê Hùng Dũng' đã đăng ký bao nhiêu dịch vụ?
b\- Hãy cho biết dịch vụ nào (tên dịch vụ) có ít cuộc gọi nhất?
c\- Hãy cho biết cuộc gọi nào tốn nhiều tiền nhất? (mã cuộc gọi, số tiền phải trả = (thời gian kết thút - thời gian bắt đầu) * đơn giá)
Lưu ý: tên in đậm là khóa, các tên giống nhau là khóa ngoại.
Bài giải: (do từ trước đến giờ chỉ viết code giấy chưa bao giờ thực hành trên máy nên mình không biết lệnh mình viết có đúng không, nếu có sai mấy bạn sửa giúp mình nhe).
a\
select họtên, count(mãdịchvụ) as sốdịchvụ
from khách, thuêbao, đăngkýdịchvụ.
where (khách.họtên = 'Lê Hùng Dũng') and (khách.mãkhách = thuêbao.mãkhách) and (đăngkýdịchvụ.sốthuêbao = thuêbao.sốthuêbao)
b\
creat view đếmcuộcgọi
select mãdịchvụ, têndịchvụ, count(mãcuộcgọi) as sốcuộcgọi
from dịchvụ, cuộcgọi
where dịchvụ.mãdịchvụ = cuộcgọi.mãdịchvụ
group by mãdịchvụ
chương trình chính
select mãdịchvụ, têndịchvụ, min(sốcuộcgọi)
from đếmcuộcgọi
c\
creat view tínhđơngiá
select mãcuộcgọi, ( (thờigiankếtthút - thờigianbắtđầu) * đơngiá ) as sốtiềnphảitrả
from dịchvụ, cuộcgọi
where dịchvụ.mãdịchvụ = cuộcgọi.mãdịchvụ
chương trình chính
select mãcuộcgọi, min(sốtiềnphảitrả)
from tínhđơngiá
các bạn xem mình giải thế có đúng không?
ngoài ra trong câu b nếu dùng lệnh min thì nó xuất ra bao nhiêu kết quả??? (nếu có nhiều kết quả trùng nhau)
Cố gắng giúp mình nha, ngày mai mình thi rồi
Cám ơn rất nhiều!!!