Bài giảng thực hành cơ SỞ DỮ liệU



tải về 4.27 Mb.
Chế độ xem pdf
trang32/43
Chuyển đổi dữ liệu13.11.2023
Kích4.27 Mb.
#55638
1   ...   28   29   30   31   32   33   34   35   ...   43
TH CSDL 2015Sep
NEW.Bài giảng CSDL sau nghiệm thu-2023, 6. Đề cương Cơ sở dữ liệu- sau nghiệm thu. 23.02.2022, Chuong01-CSDL
 
Ví dụ: muốn biết những sản phẩm đ
SELECT products.productCode, 
orderDetails.orderNumber
FROM products
INNER JOIN orderDetails on 
orderDetails.productCode;
ết những sản phẩm đã được bán, có thể sử dụng INNER JOIN
.productCode, products.productName, 
.orderNumber 
INNER JOIN orderDetails on products.productCode = 
.productCode; 
78 
INNER JOIN như sau: 
.productName,
.productCode =


79 
INNER JOIN so sánh từng dòng trong bảng products và OrderDetails để tìm một cặp bản 
ghi có cùng productCode. Nếu một cặp bản ghi có cùng mã sản phẩm, khi đó tên sản 
phẩm và số thứ tự cũng sẽ được kết hợp thành một hàng để trả lại kết quả. 
Bí danh (Alias): có thể tạo bí danh của bảng
tbl_A là A 
và tham chiếu đến cột
M 

A.M 

như vậy không mất công gõ lại tên bảng nữa. Ví dụ trên có thể viết lại như sau: 
SELECT p.productCode, p.productName, o.orderNumber 
FROM products p 
INNER JOIN orderDetails o on p.productCode = o.productCode; 
Lưu ý: Bên cạnh phép nối trong sử dụng mệnh đề INNER JOIN .. ON, có thể nối trong 
hai bảng bằng cách đưa điều kiện nối vào mệnh đề WHERE. Ví dụ trên có thể viết lại 
như sau: 
SELECT p.productCode, p.productName, o.orderNumber 
FROM products p, orderDetails o
WHERE p.productCode = o.productCode;
Chúng ta sẽ xem xét một số ví dụ khác sử dụng phép nối dưới đây:
Ví dụ: Bảng Employees là bảng lưu giữ thông tin về các nhân viên của công ty; bảng 
Customers là bảng lưu giữ thông tin của các khách hàng, trong đó có thông tin liên quan 
đến mã số của nhân viên chăm sóc khách hàng. Như vậy liên kết giữa hai bảng này được 
thực hiện thông qua cột employeeNumber của bảng Employees và cột salesRep 
employeeNumber của bảng Customers. 
Để biết thông tin về khách hàng và tên nhân viên chăm sóc khách hàng đó, có thể viết 
truy vấn sử dụng INNER JOIN như sau: 
SELECT customerName, firstname as EmployeeName 
FROM customers C join employees E
on C.salesrepemployeenumber = e.employeenumber 
Kết quả trả về như sau: 


80 
Ví dụ: Đưa ra thông tin về các dòng sản phẩm và tổng số hàng có trong dòng sản phẩm 
đó.
SELECT pl.productLine, pl.textDescription, 
sum(quantityInStock)
FROM productlines pl JOIN products p ON pl.productLine 
=p.productLine
GROUP BY pl.productLine; 
Kết quả trả về như sau: 


81 
Ví dụ: Đưa ra thông tin về các sản phẩm và tổng giá trị đã đặt hàng cho sản phẩm, sắp 
xếp theo tổng giá trị tăng dần. 
SELECT P.productCode, 
P.productName, 
SUM(priceEach * quantityOrdered) total 
FROM orderdetails O 
INNER JOIN products P ON O.productCode = P.productCode 
GROUP by productCode 
ORDER BY total 
Kết quả trả về như sau: 


82 
Bên cạnh phép nối hai bảng dữ liệu, ta có thể nối nhiều bảng dữ liệu trong cùng một câu 
lệnh SELECT. 
Ví dụ: Đưa ra tên các khách hàng và tổng giá trị các đơn hàng của các khách hàng đó. 
SELECT C.customerName, sum(OD.priceEach*OD.quantityOrdered) 
as total 
FROM customers C 
INNER JOIN orders O on C.customerNumber = O.customerNumber 
INNER JOIN orderdetails OD on O.orderNumber = 
OD.orderNumber 
GROUP BY C.customerName 
Như trong ví dụ trên thông tin cần kết hợp từ ba bảng dữ liệu là customers, orders và 
orderdetails.
Ví dụ: Đưa ra các đơn hàng, tên các khách hàng và tổng giá trị của đơn hàng đó. 


83 
SELECT O.orderNumber,C.customerName, 
sum(OD.priceEach*OD.quantityOrdered) as total 
FROM customers C 
INNER JOIN orders O on C.customerNumber = O.customerNumber 
INNER JOIN orderdetails OD on O.orderNumber = 
OD.orderNumber 
GROUP BY O.orderNumber; 

tải về 4.27 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   28   29   30   31   32   33   34   35   ...   43




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương