MySQL JOINs คืออะไร
MySQL SELECT ดึงข้อมูลจากตารางเดียวได้ แต่คำถามหลายอย่างต้องการข้อมูลจากหลายตาราง จึงใช้ Join operation
MySQL join คือวิธีเชื่อมโยงข้อมูลจาก 2 ตารางขึ้นไป ตามค่าของคอล럼ร่วม (common column) ผลลัพธ์เป็นตารางชั่วคราวใหม่ กล่าวคือ ดึงเรคอร์ดจากตารางที่เกี่ยวข้องกันตรรกะหลายตารางมารวมในตารางชั่วคราวใหม่ สร้างขึ้นจากคอลัมน์ที่ทั้งสองตารางแบ่งปัน (join key หรือ common key)
ประเภทของ Joins ที่ MySQL รองรับ:
1. Cross Join
รูปแบบพื้นฐานสุด นำแต่ละแถวของตาราง 1 มาต่อกับทุกแถวของตาราง 2 ถ้าตาราง 1 มี 3 แถว ตาราง 2 มี 2 แถว -> ได้ 6 แถว
mysql> Select tbl_1.id, tbl_2.id FROM tbl_1 CROSS JOIN tbl_2; -- ผลลัพธ์ 16 แถว (4x4)
2. Inner Join (Equi Join)
ต้องมี join-predicate (เงื่อนไข) ต้องมีค่าคอลัมน์ตรงกันในทั้งสองตาราง
mysql> SELECT tbl_1.id,tbl_2.id FROM tbl_1 INNER JOIN tbl_2 ON tbl_1.name = tbl_2.name; -- ผลลัพธ์ 1 แถว (เฉพาะ Aarav)
3. Left Join
มีแนวคิด left table และ right table คืนทุกแถวของ left table รวมถึงแถวที่ match และไม่ match join-predicate แถวที่ไม่ match จะมี NULL ในคอลัมน์ right table
mysql> SELECT tbl_1.id,tbl_2.id FROM tbl_1 LEFT JOIN tbl_2 ON tbl_1.name = tbl_2.name; -- ผลลัพธ์ 4 แถว (ทุกแถว tbl_1, tbl_2 แสดงเฉพาะที่ match)
4. Right Join
เหมือน LEFT join แต่กลับด้าน คืนทุกแถวของ right table แถวที่ไม่ match จะมี NULL ในคอลัมน์ left table
mysql> SELECT tbl_1.id,tbl_2.id FROM tbl_1 RIGHT JOIN tbl_2 ON tbl_1.name = tbl_2.name; -- ผลลัพธ์ 4 แถว (ทุกแถว tbl_2, tbl_1 แสดงเฉพาะที่ match)