Nhiều phép nối

Kết hợp dữ liệu trong SQL

Maham Faisal Khan

Senior Content Developer, DataCamp

Nối chồng nối

SELECT *
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id

INNER JOIN another_table ON left_table.id = another_table.id;

Lưu ý. Tùy tình huống, có thể dùng left_table hoặc right_table trong mệnh đề ON.

Kết hợp dữ liệu trong SQL

Nối chồng nối

Bảng prime_minister_terms từ cơ sở dữ liệu lãnh đạo thế giới

Bảng prime_minister_terms, gồm hai cột: tên thủ tướng và năm nhậm chức.

Kết hợp dữ liệu trong SQL

Nên nối cái nào trước?

SELECT p1.country, p1.continent, 
       president, prime_minister
FROM prime_ministers as p1
INNER JOIN presidents as p2
USING(country);
| country  | continent     | president               | prime_minister   |
| -------- | ------------- | ----------------------- | ---------------- |
| Egypt    | Africa        | Abdel Fattah el-Sisi    | Mostafa Madbouly |
| Portugal | Europe        | Marcelo Rebelo de Sousa | Luís Montenegro  |
| Pakistan | Asia          | Asif Ali Zardari        | Shehbaz Sharif   |
| India    | Asia          | Droupadi Murmu          | Narendra Modi    |
Kết hợp dữ liệu trong SQL

Xâu chuỗi các phép nối

Sơ đồ cho thấy kết quả phép nối ở trang trước (presidents và prime_ministers) với bảng mới, prime_minister_terms. Kết quả có 5 cột: country, continent, president, prime_minister, và pm_start.

Kết hợp dữ liệu trong SQL

Xâu chuỗi các phép nối

-- SQL query for chaining inner joins
SELECT 
    p1.country, 
    p1.continent, 
    president, 
    prime_minister, 
    pm_start
FROM prime_ministers as p1
INNER JOIN presidents as p2
USING(country)

INNER JOIN prime_minister_terms as p3 USING(prime_minister);
Kết hợp dữ liệu trong SQL

Chúng ta nối theo trường nào?

SELECT * 
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id;
Sơ đồ INNER JOIN theo trường id

Sơ đồ cho thấy khi khớp theo một cột, đôi khi trường nối từ bảng trái có nhiều bản ghi khớp ở bảng phải. Kết quả có nhiều bản ghi cho mỗi id ở bảng phải khớp với bảng trái.

Kết hợp dữ liệu trong SQL

Nối theo nhiều khóa

SELECT * 
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id
    AND left_table.date = right_table.date;
Sơ đồ INNER JOIN theo trường iddate

Sơ đồ cho thấy số bản ghi trả về giảm khi dùng nhiều trường nối. Ở đây, cả id và date được dùng để nối hai bảng.

Kết hợp dữ liệu trong SQL

Ayo berlatih!

Kết hợp dữ liệu trong SQL

Preparing Video For Download...