รวมระเบียนตารางต้นทางเมื่อใช้ในส่วนคำสั่ง FROM ใดๆ
ไวยากรณ์
FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1compopr table2.field2
การดำเนินการ LEFT JOIN และ RIGHT JOIN มีส่วนต่างๆ ดังต่อไปนี้:
| ส่วน | คำอธิบาย |
|---|---|
| table1, table2 | ชื่อของตารางที่ระเบียนถูกรวม |
| field1, field2 | ชื่อของเขตข้อมูลที่รวมกัน เขตข้อมูลจะต้องเป็นชนิดข้อมูลเดียวกันและมีข้อมูลชนิดเดียวกัน แต่ไม่จําเป็นต้องมีชื่อเดียวกัน |
| compopr | ตัวดําเนินการเปรียบเทียบเชิงสัมพันธ์ใดๆ: "=, "," "<>," "<=" ">=" หรือ "<>" |
ข้อสังเกต
ใช้การดําเนินการ LEFT JOIN เพื่อสร้างการรวมภายนอกด้านซ้าย การรวมภายนอกด้านซ้ายรวมระเบียนทั้งหมดจากตารางแรก (ซ้าย) ของสองตาราง แม้ว่าจะไม่มีค่าที่ตรงกันสําหรับระเบียนในตารางที่สอง (ขวา) ก็ตาม
ใช้การดําเนินการ RIGHT JOIN เพื่อสร้างการรวมภายนอกด้านขวา การรวมภายนอกด้านขวารวมระเบียนทั้งหมดจากตารางที่สอง (ขวา) ของสองตาราง แม้ว่าจะไม่มีค่าที่ตรงกันสําหรับระเบียนในตารางแรก (ซ้าย) ก็ตาม
ตัวอย่างเช่น คุณสามารถใช้ LEFT JOIN กับตารางแผนก (ซ้าย) และพนักงาน (ขวา) เพื่อเลือกทุกแผนก รวมถึงแผนกที่ไม่มีพนักงานที่กําหนดให้ เมื่อต้องการเลือกพนักงานทั้งหมด รวมถึงพนักงานที่ไม่ได้กําหนดไปยังแผนก คุณจะต้องใช้ RIGHT JOIN
ตัวอย่างต่อไปนี้แสดงวิธีที่คุณสามารถรวมตารางประเภทและผลิตภัณฑ์บนเขตข้อมูล CategoryID คิวรีจะสร้างรายการประเภททั้งหมด รวมถึงประเภทที่ไม่มีผลิตภัณฑ์ใดๆ:
SELECT CategoryName, ProductName FROM Categories LEFT JOIN Products ON Categories.CategoryID = Products.CategoryID;
ในตัวอย่างนี้ CategoryID คือเขตข้อมูลที่รวมกัน แต่จะไม่รวมอยู่ในผลลัพธ์ของคิวรีเนื่องจากไม่ได้รวมอยู่ในคําสั่ง SELECT เมื่อต้องการรวมเขตข้อมูลที่รวมเข้าด้วยกัน ให้ใส่ชื่อเขตข้อมูลในคําสั่ง SELECT ในกรณีนี้ Categories.CategoryIDคือ
เมื่อต้องการสร้างคิวรีที่มีแต่ระเบียนที่มีข้อมูลเหมือนกันในเขตข้อมูลที่รวมกัน ให้ใช้การดำเนินการ INNER JOIN
- LEFT JOIN หรือ RIGHT JOIN สามารถซ้อนอยู่ภายใน INNER JOIN ได้ แต่ INNER JOIN ไม่สามารถซ้อนภายใน LEFT JOIN หรือ RIGHT JOIN ได้ ดูการสนทนาเกี่ยวกับการซ้อนในหัวข้อ INNER JOIN เพื่อดูวิธีการซ้อนการรวมภายในการรวมอื่นๆ
- คุณสามารถลิงก์ส่วนคําสั่ง ON ได้หลายส่วน ดูการสนทนาเกี่ยวกับการเชื่อมโยงส่วนคําสั่งในหัวข้อ INNER JOIN เพื่อดูวิธีดําเนินการ
ถ้าคุณพยายามรวมเขตข้อมูลที่มีข้อมูล Memo หรือวัตถุ OLE ข้อผิดพลาดจะเกิดขึ้น