SQL Join

June 2009 | By platoosom | MySQL | Tags : | อ่าน : 876

ภาพไม่เกี่ยวกับบทความ
คำสั่ง 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 ตารางจึงจะให้ผลลัพธ์ ถ้ามีในตารางใดตารางหนึ่ง จะถูกคัดทิ้ง

บทความน่าสนใจ

  1. left join 3 table
  2. การใช้ left join ภาษา sql
  3. การใช้ inner join ภาษา sql
  4. SQL Update
  5. SQL INSERT INTO
Tags:

ผู้เขียน: วัชรเมธน์ ชิษณุคุปต์ ศรีเนธิโรทัย

เว็บไซต์ :http://www.select2web.com

งานเล็กๆก็ยิ่งใหญ่ได้ ถ้าอยู่ในที่ๆเหมาะสม

มี 4 ความเห็น ในบทความเรื่อง “SQL Join”

  1. mc says:

    อยากถามครับ มือใหม่จริงๆ
    ต้องการ join ตาราง 3 ตารางเข้าด้วยกันครับ
    สมมุติ
    table1=field(ID_member,Subject,ect.)
    table2=field(ID_member,realname,ID_board,ect.)
    table3=field(ID_board,board_name)

    ต้องการดึง Subject จาก table1 ออกมาแสดง และใช้ ID_member จาก table1 ไปเป็นตัวอ้างอิง ID_member จาก table2 เพื่อดึง realname ออกมาแสดง
    และใช้ ID_board จาก table2 เป็นตัวอ้างอิง ID_board จาก table3 เพื่อดึง board_name ออกมาแสดง

    ต้องทำอย่างไรครับ

  2. platoosom says:

    อ่านได้ที่นี่ครับ http://www.select2web.com/mysql/left-join-3-table.html

  3. mc says:

    ได้แล้วครับ….ขอบคุณมากครับ โอกาสหน้าถ้ามีปัญหาจะนำมาถามอีกครับ

  4. pongtornz says:

    SELECT * from ชื่อตาราง1
    LEFT JOIN ชื่อตาราง2 ON (ชื่อตาราง1.คีร่วม = ชื่อตาราง2.คีร่วม)
    LEFT JOIN ชื่อตาราง3 ON (ชื่อตาราง3.คีร่วม=ชื่อตาราง1.คีร่วม)
    ;

แสดงความเห็น

ชื่อ *
Email *
Website
ความคิดเห็น