การ JOIN หลายตาราง

การ Join ข้อมูลใน SQL

Maham Faisal Khan

Senior Content Developer, DataCamp

JOIN ซ้อน JOIN

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;

หมายเหตุ ขึ้นอยู่กับการใช้งาน สามารถใช้ left_table หรือ right_table ในส่วน ON ได้

การ Join ข้อมูลใน SQL

JOIN ซ้อน JOIN

ตาราง prime_minister_terms จากฐานข้อมูลผู้นำโลก

ตาราง prime_minister_terms แสดงสองคอลัมน์ ได้แก่ ชื่อนายกรัฐมนตรีและปีที่เข้ารับตำแหน่ง

การ Join ข้อมูลใน SQL

ควร JOIN ตารางใดก่อน?

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    |
การ Join ข้อมูลใน SQL

การเชื่อม JOIN ต่อกัน

ไดอะแกรมแสดงผลลัพธ์จากการ JOIN ตาราง presidents และ prime_ministers ในสไลด์ก่อนหน้า กับตาราง prime_minister_terms ผลลัพธ์ประกอบด้วยห้าคอลัมน์ ได้แก่ country, continent, president, prime_minister และ pm_start

การ Join ข้อมูลใน SQL

การเชื่อม JOIN ต่อกัน

-- 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);
การ Join ข้อมูลใน SQL

กำลัง JOIN บนอะไร?

SELECT * 
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id;
ไดอะแกรมสำหรับ INNER JOIN ON ฟิลด์ id

ไดอะแกรมแสดงว่าเมื่อจับคู่ด้วยหนึ่งคอลัมน์ ฟิลด์ที่ใช้ JOIN จาก left_table อาจมีหลายรายการที่ตรงกันใน right_table ผลลัพธ์จึงมีหลายแถวสำหรับแต่ละ id ใน right_table ที่ตรงกัน

การ Join ข้อมูลใน SQL

การ JOIN บนหลาย key

SELECT * 
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id
    AND left_table.date = right_table.date;
ไดอะแกรมสำหรับ INNER JOIN ON ฟิลด์ id และ date

ไดอะแกรมแสดงว่าจำนวนแถวในผลลัพธ์ลดลงได้เมื่อใช้หลายฟิลด์ในการ JOIN โดยที่นี่ใช้ทั้ง id และ date เพื่อเชื่อมสองตาราง

การ Join ข้อมูลใน SQL

มาฝึกกันเถอะ!

การ Join ข้อมูลใน SQL

Preparing Video For Download...