Tải bản đầy đủ (.pdf) (26 trang)

truy vấn dữ liệu từ nhiều bảng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (248.55 KB, 26 trang )

11
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Truy vấn dữ liệu từ nhiều bảng
22
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Lấy dữ liệu từ nhiều bảng
NHANVIEN PHONG


33
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC

Kết bằng (EquiJoin)

Kết không bằng (Non EquiJoin)

Kết với chính mình (Self Join)
Các loại phép kết

Kết bằng mệnh đề Join
44
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Phép kết bằng

Sử dụng điều kiện kết bằng trong mệnh
đề WHERE


Nếu xuất hiện tên cột trùng nhau trong
nhiều bảng thì bắt buộc phải sử dụng
tên bảng hoặc bí danh bảng trước tên
cột.
SELECT bang1.cot, bang2.cot
FROM bang1, bang2
WHERE bang1.cot1 = bang2.cot2
55
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Phép kết bằng thực hiện như thế nào?
NHANVIEN
PHONG
Khóa ngoại Khóa chính


66
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC

SELECT nhanvien.manhanvien, nhanvien.tennv,
nhanvien.maphong, phong.maphong,
phong.makhuvuc
FROM qlns.nhanvien, qlns.phong
WHERE nhanvien.maphong = phong.maphong;
Kết quả nhận được từ phép kết bằng

77
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC

SELECT nv.manhanvien, nv.tennv, nv.maphong,
ph.maphong, ph.makhuvuc
FROM qlns.nhanvien nv , qlns.phong ph
WHERE nv.maphong = ph.maphong;
Sử dụng bí danh cho bảng

Đơn giản hóa các câu truy vấn khi cần sử dụng
tên bảng cho việc truy xuất các cột.
88
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Kết nhiều hơn hai bảng
NHANVIEN KHUVUC PHONG

Để kết n bảng, ta cần tối thiểu n-1 phép kết. Ví dụ để kết ba
bảng, ta cần tối thiểu hai phép kết bảng.

99
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Kết không bằng
NHANVIEN LOAICONGVIEC
Mức lương của nhân viện
phải nằm trong khoản hai
cận trong bảng
LOAICONGVIEC

1010
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC

Kết quả từ phép kết không bằng
SELECT nv.tennv, nv.mucluong, lcv.maloaicv
FROM qlns.nhanvien nv, qlns.loaicongviec lcv
WHERE nv.mucluong
BETWEEN lcv.mucluong_min AND lcv.mucluong_max;

1111
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Kết với chính mình
NHANVIEN (NHAN_VIEN) NHANVIEN (NGUOI_QUAN_LY)
Mã người quản lý (MANGUOIQUANLY) trong
bảng NHAN_VIEN phải bằng với mã nhân viên
(MANHANVIEN) trong bảng NGUOI_QUAN_LY

`

1212
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Kết với chính mình
SELECT nvien.honv+’ ‘+nvien.tennv + N' làm việc cho '
+ nguoiqly.tennv as [Nhân viên và người QLý]
FROM qlns.nhanvien nvien, qlns.nhanvien nguoiqly
WHERE nvien.manguoiquanly = nguoiqly.manhanvien ;

1313
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Sử dụng mệnh đề JOIN để kết

SELECT bang1.cot, bang2.cot
FROM bang1
[CROSS JOIN bang2] |
[JOIN bang2
ON(bang1.ten_cot = bang2.ten_cot)] |
[LEFT|RIGHT|FULL [OUTER] JOIN bang2
ON (bang1.ten_cot = bang2.ten_cot) ]
1414
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cross Joins

Mệnh đề CROSS JOIN sẽ kết mỗi dòng của bảng 1 với tất cả
các dòng của bảng 2
Kết quả
CROSS JOIN:
14x8=112 rows
NHANVIEN (14 dòng)
PHONG (8 rows)


1515
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Mệnh đề ON trong phép kết JOIN

Tách biệt đều kiện kết với các điều kiện
chọn lọc dữ liệu khác.

Các câu truy vấn trở nên dễ đọc hơn.

1616
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC

SELECT nv.manhanvien, nv.tennv, nv.maphong,
ph.maphong, ph.makhuvuc
FROM qlns.nhanvien nv JOIN qlns.phong ph
ON (nv.maphong = ph.maphong)
Sử dụng mệnh đề JOIN …ON…


1717
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC

Kết nhiều hơn hai bảng
SELECT manhanvien, tenphong, tenkhuvuc, thanhpho
FROM qlns.nhanvien nv
JOIN qlns.phong ph
ON ph.maphong = nv.maphong
JOIN qlns.khuvuc kv
ON ph.makhuvuc = kv.makhuvuc

1818
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC

SELECT nv.honv, nv.tennv, nv.maphong, ph.tenphong
FROM qlns.nhanvien nv
LEFT OUTER JOIN qlns.phong ph

ON (nv.maphong = ph.maphong)
Phép kết trái (LEFT [OUTER] JOIN)

1919
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC

SELECT nv.honv, nv.tennv, nv.maphong, ph.tenphong
FROM qlns.nhanvien nv
RIGHT OUTER JOIN qlns.phong ph
ON (nv.maphong = ph.maphong)
Phép kết phải (RIGHT [OUTER] JOIN)

2020
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC

SELECT nv.honv, nv.tennv, nv.maphong, ph.tenphong
FROM qlns.nhanvien nv
FULL OUTER JOIN qlns.phong ph
ON (nv.maphong = ph.maphong)
Phép kết đầy đủ (FULL [OUTER] JOIN)

2121
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Thực hành

Viết các câu truy vấn kết các bảng bằng mệnh đề WHERE.


Câu truy vấn kết với chính mình

Kết hai bảng bằng Cross Join

Kết các bảng sử dụng JOIN, LEFT|RIGHT|FULL JOINT
2222
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Sử dụng biểu thức CASE trong
truy vấn
2323
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Biểu thức CASE dạng đơn giản
Biểu thức CASE dạng đơn giản
CASE Biểu_thức
WHEN Giá_trị_1 THEN Biểu_thức_kết_quả_1
[WHEN Giá_trị_2 THEN Biểu_thức_kết_quả_2
]
[ ELSE Biểu_thức_kết_quả_N]
END

Giá trị 1, giá trị 2

Các giá trị cụ thể để so sánh bằng (=) với biểu thức

Biểu thức kết quả 1, biểu thức kết quả 2

Biểu thức sẽ được trả về khi việc so sánh của biểu thức
bằng với các giá trị so sánh tương ứng

2424
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Ví dụ
Ví dụ
SELECT LOAI=
CASE LEFT(MAVTU, 2)
WHEN 'DD' THEN 'Đầu DVD'
WHEN 'VD' THEN 'Đầu VCD'
WHEN 'TV' THEN 'Tivi'
WHEN 'TL' THEN 'Tủ lạnh'
WHEN 'BI' THEN 'Bia lon'
WHEN 'LO' THEN 'Loa thùng'
ELSE 'Chưa phân loại'
END,
MAVTU, TENVTU, DVTINH
FROM VATTU
ORDER BY LEFT(MAVTU, 2)
2525
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Biểu thức CASE dạng tìm kiếm
Biểu thức CASE dạng tìm kiếm
CASE
WHEN Bt_logic_1 THEN Biểu_thức_kết_quả_1
[WHEN Bt_logic_2 THEN Biểu_thức_kết_quả_2
]
[ ELSE Biểu_thức_kết_quả_N]
END


Biểu thức logic1, biểu thức logic2

Các biểu thức luận lý dùng để thực hiện các phép so sánh
trong biểu thức CASE.

Biểu thức kết quả 1, biểu thức kết quả 2

Biểu thức sẽ được trả về khi một trong các biểu thức luận lý so
sánh có kết quả là đúng.

×