MySQL การใช้งานคำสั่ง JOIN

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 ดึงชื่อภาพยนตร์มาจากตาราง film
  • CROSS JOIN language AS l ดึงชื่อภาษาทั้งหมดในระบบมาจับคู่กับภาพยนตร์แต่ละเรื่อง
  • ใช้ LIMIT 15 เพื่อจำกัดผลลัพธ์เพียง 15 แถว (ถ้าไม่จำกัดจะได้ผลลัพธ์ 6,000 แถว เพราะในฐานข้อมูล sakila ที่เราใช้เป็นตัวอย่าง มีภาพยนตร์ 1,000 เรื่อง และมีภาษา 6 ภาษา)
แชร์เรื่องนี้