
คำสั่ง 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 ตารางจึงจะให้ผลลัพธ์ ถ้ามีในตารางใดตารางหนึ่ง จะถูกคัดทิ้ง
บทความน่าสนใจ
ผู้เขียน: วัชรเมธน์ ชิษณุคุปต์ ศรีเนธิโรทัย
เว็บไซต์ :http://www.select2web.com
งานเล็กๆก็ยิ่งใหญ่ได้ ถ้าอยู่ในที่ๆเหมาะสม
มี 4 ความเห็น ในบทความเรื่อง “SQL Join”
แสดงความเห็น
Categories
- 1 week 1 Source (2)
- AppServ (10)
- Array (2)
- Codeigniter (1)
- Computer (7)
- CSS (9)
- Dreamweaver (7)
- Firefox (7)
- Form (2)
- FPDF (15)
- General (31)
- HTML (2)
- Javascript (6)
- jQuery (86)
- Mac (10)
- MySQL (15)
- Navicat (9)
- Other (58)
- PHP (97)
- PHP-function (12)
- Program (8)
- SMF (15)
- SQL (20)
- Theme (1)
- TinyMCE (7)
- webservice (1)
- Wordpress (18)
- คอมฯ ทั่วไป (6)
-
Recent Posts
- akismet ปลักอินกรองแสปมของเวิร์ดเพรส
- WP-CMS Post Control ปลักอินสำหรับซ่อนสิ่งที่ไม่ต้องการในเวิร์ดเพรส
- wordpress flickr manager ปลักอินสำหรับอัปโหลดภาพเก็บที่ flickr
- picpick โปรแกรมที่เว็บโปรแกรมเมอร์ต้องมีไว้ติดเครื่อง
- ขอความเห็น
- todoist โปรแกรมจดรายการสิ่งที่ต้องทำสุดเจ๋ง
- wordpress google xml sitemap หนึ่งในปลักอินที่ท่านต้องติดตั้ง
- แนะนำเว็บให้ความรู้การเขียนโปรแกรมโคตะระเด็ด
- โปรแกรมจดรายการสิ่งที่จะต้องทำ
- แจกภาพปุ่มเอาไปตกแต่งเว็บ
- วิธีสร้างเว็บให้ติดอันดับหนึ่ง
- wordpress ปิงผู้ปิดทองหลังพระ
- วิธีเปิด notepad อย่างรวดเร็ว
- วิธีดึงข้อมูลออกจากฐานข้อมูลของเวิร์ดเพรส แบบสุ่ม
- หารายละเอียดโดเมน
Tags
AppServ Array Back to the basic bug calendar CAPTCHA chart CSS Dreamveawer eclipse error firebug Firefox firefox plugin FPDF General google helios HTML icons Javascript jQuery jquery plugin jquery slide jQuery tutorial jQuery UI Mac MySQL Other pdt PHP phpmailer 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.คีร่วม)
;