You are on page 1of 3

1.

Hãy phát biểu chặt chẽ ràng buộc toàn vẹn (chỉ phát biểu bối cảnh và bảng
tầm ảnh
hưởng): 

a. “Trị giá của một đơn hàng bằng tổng thành tiền của các chi tiết thuộc đơn hàng đó”.

∀ t ∈ DONHANG : t .TRIGIA= ∑ (ct . SOLUONG∗ct . DONGIA)


(ct ∈CHITIET : ct . MADH=t . MADH)

- Bối cảnh: DONHANG, CHITIET

- Bảng tầm ảnh hưởng:

R0-1 Thêm Xóa Sửa


DONHANG +(1) - +(TRIGIA)
CHITIET + + +(SL, DONGIA)
(1) Kiểm tra trị giá = 0

2. Viết các câu truy vấn sau bằng ngôn ngữ SQL
b. Cho biết thông tin khách hàng (TENKH) có địa chỉ tại ‘Tp. Hồ Chí Minh’. Kết quả
được sắp xếp tên khách hàng giảm dần

SELECT TENKH
FROM KHACHHANG
WHERE DIACHI = ‘Tp. Hồ Chí Minh’
ORDER BY TENKH DESC

c. Cho biết thông tin đặt hàng (MADH, SOLUONG) loại xe đạp ‘XĐĐ’ (MALX) có
thời hạn giao trong tháng 7 năm 2022

SELECT MADH, SOLUONG


FROM CHITIET JOIN XEDAP
ON CHITIET.MAXD = XEDAP.MAXD
WHERE MALX = ‘XĐĐ’
AND MADH IN (SELECT MADH
FROM DONHANG
WHERE MONTH(NGAYGH) = 7 AND YEAR(NGAYGH) = 2022)

d. Cho biết số đơn hàng của từng khách hàng trong tháng 6 năm 2022. Thông tin hiển
thị gồm: tên khách hàng và số đơn hàng đặt.
SELECT TENKH, COUNT(MADH) AS SODH
FROM DONHANG DH JOIN KHACHHANG KH
ON DH.MAKH = KH.MAKH
WHERE MONTH(NGAYGH) = 6 AND YEAR(NGAYGH) = 2022
GROUP BY TENKH

e. Cho biết thông tin (MAXD) thuộc loại ‘Xe đạp địa hình’ (TENLX) có xuất xứ
‘Mỹ’ không bán được.

(SELECT MAXD

FROM XEDAP ON LOAIXE

ON XEDAP.MALX = LOAIXE.MALX

WHERE TENLX = ‘Xe đạp địa hình’ AND XUATXU = ‘Mỹ’)

EXCEPT

(SELECT MAXD

FROM XEDAP ON LOAIXE

ON XEDAP.MALX = LOAIXE.MALX

WHERE TENLX = ‘Xe đạp địa hình’ AND XUATXU = ‘Mỹ’

AND MAXD IN SELECT MAXD

FROM CHITIET)

f. Tìm mã đơn hàng đã mua tất cả các xe đạp có xuất xứ Nhật. 

SELECT MADH
FROM DONHANG DH
WHERE NOT EXISTS (SELECT *
FROM XEDAP XD
WHERE XUATXU = ‘Nhật’
AND NOT EXISTS (SELECT *
FROM CHITIET CT
WHERE CT.MAXD = XD.MAXD AND CT.MADH =
CT.MADH))

g. Cho biết thông tin xe đạp (MAXD, TENXD) có số đơn đặt hàng nhiều nhất trong
tháng 7 năm 2022

SELECT TOP 1 XD.MAXD, TENXD, COUNT(MADH) AS SODON


FROM XEDAP XD JOIN CHITIET CT
ON XD.MAXD = CT.MAXD
WHERE MADH IN (SELECT MADH
FROM DONHANG
WHERE MONTH(NGAYDH) = 7 AND YEAR(NGAYDH) = 2022)
ORDER BY XD.MAXD, TENXD DESC

You might also like