W3School

JOIN TRONG SQL

Một mệnh đề JOIN được sử dụng để lấy thông tin từ nhiều bảng với điều kiện kết nối thường là các trường key của bảng. Ví dụ, ID của khách hàng trong bảng Đơn hàng có thể JOIN với ID của chính khách hàng đó trong bảng Khách hàng.

Hãy xem bảng “Đơn hàng” sau, bảng ghi nhận các đơn hàng được khách hàng nào MUA qua “CustomerID”:

OrderIDCustomerIDOrderDate
1030821996-09-18
10309371996-09-19
10310771996-09-20

Tiếp đó hãy xem bảng chi tiết của từng “Khách hàng”:

CustomerIDCustomerNameContactNameCountry
1Alfreds FutterkisteMaria AndersGermany
2Ana Trujillo Emparedados y heladosAna TrujilloMexico
3Antonio Moreno TaqueríaAntonio MorenoMexico

Lưu ý : cột “CustomerID” trong bảng “Đơn đặt hàng” tham chiếu đến “CustomerID” trong bảng “Khách hàng”. Mối quan hệ giữa hai bảng trên là cột “ID khách hàng”.

Sau đó, chúng ta có thể tạo câu lệnh SQL sau (có chứa một INNER JOIN), chọn các bản ghi có giá trị phù hợp trong cả hai bảng:

Kết quả của câu lệnh SQL trên sẽ cho ra thêm CustomerName (Tên khách hàng) qua CustomerID của khách hàng:

OrderIDCustomerNameOrderDate
10308Ana Trujillo Emparedados y helados9/18/1996
10365Antonio Moreno Taquería11/27/1996
10383Around the Horn12/16/1996
10355Around the Horn11/15/1996
10278Berglunds snabbköp8/12/1996

Bạn có thể download cơ sở dữ liệu Northwind để bắt đầu thực hành tại đây:

- Dành cho Sql Server, MS Access Download
- Dành cho Mysql: Tạo bảng trước với Download Table sau đó hãy điền data với Download Data
- Dành cho Oracle Download

Lưu ý: Tên bảng trong CSDL cho SQL Server thường được viết hoa chữ đầu. Với Mysql thì tên bảng được viết thường. Và với Oracle thì tên bảng toàn bộ được viết hoa. Bạn hãy viết đúng tên bảng trong query của mình nhé.

Trong nội dung bài viết, đôi khi tên bảng được viết dưới dạng tiếng Việt, ví dụ:

- Customers: Khách hàng
- Orders: Đơn hàng
- Employees: Nhân viên
- Shipers: Giao hàng
- Invoices: Hoá đơn

Các loại SQL JOIN khác nhau

Dưới đây là các kiểu khác nhau của các JOIN trong SQL:

Trái (LEFT) nên hiểu là bảng phía trước lệnh join, Phải (RIGHT) nên hiểu là bảng ở sau mệnh đề JOIN

  • (INNER) JOIN: Trả về các bản ghi có giá trị phù hợp trong cả hai bảng
  • LEFT (OUTER) JOIN: Trả về tất cả các bản ghi từ bảng bên trái và các bản ghi phù hợp từ bảng bên phải
  • RIGHT (OUTER) JOIN: Trả về tất cả các bản ghi từ bảng bên phải và các bản ghi phù hợp từ bảng bên trái
  • FULL (OUTER) JOIN: Trả về tất cả các bản ghi khi có một kết quả phù hợp trong bảng bên trái hoặc bên phải

W3School

Leave a comment

Your email address will not be published. Required fields are marked *