ภาพไม่เกี่ยวกับบทความ
คำสั่ง join ของภาษา SQL นั้นใช้สำหรับดึงข้อมูลออกมาจากตาราง ตั้งแต่ 2 ตารางขึ้นไป (ขึ้นไปนะครับ นั่นหมายความว่าคุณจะ join กันกี่ตารางก็ได้ แต่แนะนำว่า อย่าเยอะมากเดี๋ยวโปรแกรมจะช้า) โดยอาศัยความสัมพันธ์ระหว่าง primary key และ foreign key

primary key ก็คือฟิลด์ที่มีค่าไม่ซ้ำกันเลย
foreign key ก็คือฟิลด์ที่เก็บ primary key ของอีกตาราง ใช้สำหรับสร้างความสัมพันธ์ของข้อมูลระหว่าง 2 ตาราง

ดูตัวอย่างตารางนี้

P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

โปรดสังเกตว่าคอลัมน์ “P_Id” ก็คือ primary key ของตาราง ซึ่งข้อมูลจะไม่ซ้ำกันเลยในแต่ละแถว (คุณอย่ามองว่า LastName ก็มีค่าไม่ซ้ำ อันนี้ข้อมูลมันน้อย ถ้าข้อมูลเยอะ มันมีโอกาสที่คนจะชื่อเหมือนกันได้ แต่ “P_Id” มันจะมีค่า +1 ไปเรื่อยๆ จนเป็นล้าน ก็ไม่ซ้ำ)

ต่อไปดูที่ตารางนี้

O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15

คอลัมน์ “O_Id” เป็น primary key ของตารางนี้ และคอลัมน์ “P_Id” เป็น foreign key (เราให้เก็บ primary key ของตารางข้างบน)

โปรดสังเกตว่า เราสามารถทราบได้ว่า OrderNo หมายเลข 44678 เป็นของใคร ก็โดยการเอา P_Id ไปหาในอีกตาราง

พูดไปซะยาวถึงเรื่อง join หรือยังเนี่ย เอาล่ะ ทีนี้ถ้าเราใช้คำสั่ง SQL

SELECT * FROM tbl_order JOIN tbl_person ON (tbl_order.P_Id=tbl_person.P_Id)

ผลลัพธ์ที่ได้จะเท่ากับเอา 2 ตารางมารวมกัน โดยเอา P_Id สร้างความสัมพันธ์ระหว่าง 2 ตาราง ซึ่ง P_Id จะต้องมีทั้ง 2 ตารางจึงจะให้ผลลัพธ์ ถ้ามีในตารางใดตารางหนึ่ง จะถูกคัดทิ้ง