
คำสั่ง 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 ตารางจึงจะให้ผลลัพธ์ ถ้ามีในตารางใดตารางหนึ่ง จะถูกคัดทิ้ง
บทความน่าสนใจ
มี 4 ความเห็น ในบทความเรื่อง “SQL Join”
แสดงความเห็น
Categories
-
Recent Posts
- เครื่องฟ้อง error จอฟ้า STOP: c0000221 {Bad Image Checksum}
- The application failed to initialize properly(000000)
- อยากเปิดร้านคอม ทำยังไงดี?
- Wordpress Theme PhotoMadness ธีมสำหรับคนชอบถ่ายภาพ
- mail server : ติดตั้ง argosoft mail server
- mail server สร้างเมล์เซิฟเวอร์ทดสอบโค้ดส่งอีเมล์ ด้วย hmailserver
- php redirect สั่งเด้งฟ้าผ่า
- javascript ห้ามคลิกขวา
- CSS IE Bugs แมลงร้ายในไออี 6
- PHP round ปัดเศษ
- PHP ceil() ปัดเศษขึ้น
- Gravatar สร้างร่างใหม่สู่โลกออนไลน์
- PHP floor() ปัดเศษลง
- แจกโค้ด php คำนวณอายุ
- PHP date() ฟังก์ชั่นจัดการวัน-เวลา
Tags
Array Back to the basic calendar CAPTCHA chart CSS Dreamveawer error firefox firefox plugin FPDF General gmail google hotmail html icon icons javascript jQuery jquery plugin jquery slide jquery tooltip jQuery tutorial jQuery UI loop Mac MySQL Other PHP plugin program programming slide slide show SMF smf themes smf themes download smf themes free smf themes thai SQL sql function tooltip Wordpress wordpress plugin
อยากถามครับ มือใหม่จริงๆ
ต้องการ 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 ออกมาแสดง
ต้องทำอย่างไรครับ
อ่านได้ที่นี่ครับ http://www.select2web.com/mysql/left-join-3-table.html
ได้แล้วครับ….ขอบคุณมากครับ โอกาสหน้าถ้ามีปัญหาจะนำมาถามอีกครับ
SELECT * from ชื่อตาราง1
LEFT JOIN ชื่อตาราง2 ON (ชื่อตาราง1.คีร่วม = ชื่อตาราง2.คีร่วม)
LEFT JOIN ชื่อตาราง3 ON (ชื่อตาราง3.คีร่วม=ชื่อตาราง1.คีร่วม)
;