Hiển thị dữ liệu từ nhiều table bằng cách sử dụng join

259

Trong các bài viết trước liên quan đến Oracle SQL, kết quả hiển thị của câu truy vấn từ 1 table duy nhất. Bài viết này, SysVN giới thiệu cách “hiển thị dữ liệu từ nhiều table bằng cách sử dụng join”. Mời các bạn theo dõi!

  1. Mục tiêu

Sau khi hiểu bài này, các bạn có thể hiểu được cách sử dụng join nhiều table trong Oracle SQL. Các bạn hiểu và sử dụng được các loại join bằng cách sử dụng các mệnh đề:  NATURAL JOIN, USING, ON, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN và Cross joins
2. Join sử dụng Natural join

  • Natural join cơ bản dựa vào những column ở 2 table có tên giống nhau và kiểu dữ liệu phải giống nhau.
  • Nếu tên giống nhau mà kiểu dữ liệu khác nhau sử dụng natural join bị báo lỗi.
  • Kết quả được xuất ra dựa vào những hàng của 2 table mà có giá trị giống nhau của những column được match với nhau.

Ví dụ:

SELECT department_id, department_name,
location_id, city
FROM departments
NATURAL JOIN locations ;

Hai table departments và locations có location_id là column có cùng tên và cùng kiểu dữ liệu. Khi join sử dụng location_id để join.

Có thể sử dụng mệnh đề WHERE với natural join. Ví dụ

SELECT department_id, department_name,location_id, city
FROM departments
NATURAL JOIN locations
WHERE department_id IN (20, 50);

3. Join sử dụng USING

  • Nếu 2 table có nhiều column cùng tên nhưng khác kiểu dữ liệu Natural join không thể thực hiện được. Ta sử dụng USING để chỉ ra column nào được join
  • USING chỉ sử dụng 1 column để join khi có nhiều column được match

Ví dụ:

SELECT employee_id, last_name,
location_id, department_id
FROM employees JOIN departments
USING (department_id) ;

  • Sử dụng table alias với mệnh đề USING

Ví dụ 1: 

SELECT l.city, d.department_name
FROM locations l JOIN departments d
USING (location_id)
WHERE d.location_id = 1400;

Ví dụ 2: 

SELECT l.city, d.department_name
FROM locations l JOIN departments d
USING (location_id)
WHERE location_id = 1400;

2 ví dụ trên, ví dụ nào thực hiện thành công???

Mệnh đề USING có thể được dùng để join 3 table

Ví dụ:

SELECT e.employee_id, l.city, d.department_name
FROM employees e
JOIN departments d
USING (department_id)
JOIN locations l
USING (location_id);

4. Join sử dụng mệnh đề ON

Vi dụ:

SELECT e.employee_id, e.first_name, e.last_name, e.email, e.phone_number, e.hire_date, e.job_id, e.salary, d.department_name, d.manager_id, d.location_id
FROM employees e join departments d
ON (e.department_id=d.department_id);

Sử dụng mênh đề ON để join 3 table

Ví dụ:

SELECT employee_id, city, department_name
FROM employees e
JOIN departments d
ON d.department_id = e.department_id
JOIN locations l
ON d.location_id = l.location_id;

4. Sử dụng biểu thức điều kiện với mệnh đề JOIN

Ta có thể sử dụng mệnh đề AND, WHERE để chỉ ra những điều kiện khi sử dụng với các mệnh đề join.

Ví dụ:

Kết quả 2 câu query trên là 1