Trang chủ » Blog » [Thực hành] Truy vấn dữ liệu từ nhiều bảng

[Thực hành] Truy vấn dữ liệu từ nhiều bảng

bởi CodeGym | 26/12/2023 16:30 | Bài thực hành | Blog

Mục tiêu

Truy vấn dữ liệu từ nhiều bảng- Luyện tập sử dụng câu lệnh JOIN.

Mô tả- Truy vấn dữ liệu từ nhiều bảng

Truy vấn dữ liệu từ các bảng của CSDL bán hàng có sẵn.

Hướng dẫn nộp bài:

  • Up code lên github
  • Paste link github vào phần nộp bài

Hướng dẫn thực hiện

Bước 1: Sử dụng inner join để lấy dữ liệu từ hai bảng.

Quan sát 3 bảng customers, orders và payments trong csdl classicmodels.

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

Bây giờ, nếu bạn muốn lấy customerNumber, customerName, phone, paymentDate, amount từ hai bảng customers và payments với điều kiện là các khách hàng sống ở thành phố Las Vegas thực hiện truy vấn sau:

select customers.customerNumber, customerName, phone, paymentDate, amount from customers
inner join payments
on customers.customerNumber = payments.customerNumber
where city = 'Las Vegas'

Trong câu lệnh trên đối với mỗi hàng trong bảng customers, mệnh đề inner join so sanh nó với mỗi hàng của bảng payments để kiểm tra nếu cả hai thỏa mãn điều kiện nối (customers.customerNumber = payments.customerNumber). Khi điều kiện kết nối được khớp, nó sẽ trả lại hàng kết hợp các cột trong cả hai bảng customers và payments.

Kết quả trả về:

Bước 2: Sử dụng left join để lấy dữ liệu từ hai bảng.

Quan sát 2 bảng customers và orders trong csdl classicmodels.

Để tìm tất cả các đơn hàng thuộc từng khách hàng, bạn có thể sử dụng mệnh đề LEFT JOIN như sau:

select customers.customerNumber, customers.customerName, orders.orderNumber, orders.status
from customers
left join orders
on customers.customerNumber = orders.customerNumber

Kết quả trả về

Tất cả các bản ghi trong bảng customers đều được đưa vào bộ kết quả. Tuy nhiên, có những bản ghi trong bộ kết quả có dữ liệu khách hàng nhưng không có dữ liệu đặt hàng ví dụ: 168, 169, vv các dữ liệu lệnh trong những hàng này là NULL. Điều này có nghĩa là những khách hàng này không có đơn hàng nào trong bảng orders.

Nếu bạn thay thế mệnh đề LEFT JOIN bởi mệnh đề INNER JOIN, bạn chỉ nhận được những khách hàng có đơn đặt hàng trong bảng đơn đặt hàng.

Để tìm tất cả khách hàng chưa đặt hàng bất kỳ sản phẩm nào, bạn có thể sử dụng truy vấn sau:

select customers.customerNumber, customers.customerName, orders.orderNumber, orders.status
from customers LEFT JOIN orders
on customers.customerNumber = orders.customerNumber
where orderNumber is null

Kết quả trả về:

 Qua bài tập trên bạn đã luyện tập:

  • Truy vấn dữ liệu từ nhiều bảng với INNER JOIN
  • Truy vấn dữ liệu từ nhiều bảng với LEFT JOIN

Trên đây CodeGym đã cùng với bạn luyện tập sử dụng câu lệnh JOIN. Hãy chụp ảnh màn hình và nộp bài thực hành của bạn trên CodeGymX để cùng nhau luyện tập nhé!

Tags:

0 Lời bình

Gửi Lời bình

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

BÀI VIẾT LIÊN QUAN

BẠN MUỐN HỌC LẬP TRÌNH?

GỌI NGAY

098 953 44 58

Đăng ký tư vấn lộ trình học lập trình

Đăng ký tư vấn, định hướng lộ trình học và giải đáp các thắc mắc về ngành nghề – Miễn phí – Online.

11 + 6 =

TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM
TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM