JOIN คือคำสั่งที่ใช้สำหรับเชื่อมโยงข้อมูลระหว่าง 2 ตารางหรือมากกว่า โดยอ้างอิงจากความสัมพันธ์ของคอลัมน์ที่เกี่ยวข้องกัน เช่น foreign key
รูปแบบการใช้งาน
SELECT table1.column, table2.column
FROM table1
JOIN table2 ON table1.column = table2.column;
ประเภทของ JOIN ที่ใช้ใน MySQL
INNER JOINแสดงเฉพาะข้อมูลที่ตรงกันทั้งสองตารางLEFT JOINแสดงข้อมูลทั้งหมดจากตารางซ้าย และข้อมูลที่ตรงกันจากตารางขวาRIGHT JOINแสดงข้อมูลทั้งหมดจากตารางขวา และข้อมูลที่ตรงกันจากตารางซ้ายCROSS JOINแสดงข้อมูลทั้งหมดจากทั้งสองตาราง
ตัวอย่างการใช้งาน
INNER JOIN ดึงข้อมูลลูกค้าพร้อมกับที่อยู่ของลูกค้าคนนั้น
SQL
SELECT c.first_name, c.last_name, a.address
FROM customer AS c
JOIN address AS a ON c.address_id = a.address_id;- เชื่อมตาราง
customerกับaddress - แสดงชื่อ-นามสกุลลูกค้า และที่อยู่ของลูกค้าที่มีการเชื่อมโยงกันในฐานข้อมูล
LEFT JOIN ดูลูกค้าทั้งหมด แม้จะไม่มีข้อมูลที่อยู่ก็ตาม
SQL
SELECT c.first_name, c.last_name, a.address
FROM customer AS c
LEFT JOIN address AS a ON c.address_id = a.address_id;- แสดงลูกค้าทั้งหมดจาก
customer - ถ้าลูกค้าคนไหนไม่มีที่อยู่ที่ตรงกันใน
addressจะได้ค่าNULLในคอลัมน์ address
RIGHT JOIN แสดงสาขาทั้งหมด แม้ไม่มีลูกค้า
SQL
SELECT c.first_name, c.last_name, s.store_id
FROM customer AS c
RIGHT JOIN store AS s ON c.store_id = s.store_id;- แสดงข้อมูลร้านทั้งหมด (จาก
store) และข้อมูลลูกค้าที่เกี่ยวข้อง (จากcustomer) ถ้ามี
CROSS JOIN แสดงรายชื่อภาพยนตร์ 3 เรื่องแรก พร้อมจับคู่กับภาษาทั้งหมดในระบบ เพื่อแสดงว่าจะมีการโปรโมทหนังในทุกภาษา
SQL
SELECT f.title, l.name AS language
FROM film AS f
CROSS JOIN language AS l
LIMIT 15;FROM film AS fดึงชื่อภาพยนตร์มาจากตารางfilmCROSS JOIN language AS lดึงชื่อภาษาทั้งหมดในระบบมาจับคู่กับภาพยนตร์แต่ละเรื่อง- ใช้
LIMIT 15เพื่อจำกัดผลลัพธ์เพียง 15 แถว (ถ้าไม่จำกัดจะได้ผลลัพธ์ 6,000 แถว เพราะในฐานข้อมูล sakila ที่เราใช้เป็นตัวอย่าง มีภาพยนตร์ 1,000 เรื่อง และมีภาษา 6 ภาษา)