รวมระเบียนตารางต้นทางเมื่อใช้ในส่วนคำสั่ง FROM ใดๆ
ไวยากรณ์
FROM table1 [ LEFT | ขวา ] ตารางเข้าร่วม 2
ON table1.field1compopr table2.field2
การดำเนินการ LEFT JOIN และ RIGHT JOIN มีส่วนต่างๆ ดังต่อไปนี้:
| ส่วน | คำอธิบาย |
|---|---|
| table1, table2 | ชื่อของตารางที่ระเบียนถูกรวม |
| field1, field2 | ชื่อเขตข้อมูลที่เข้าร่วม เขตข้อมูลจะต้องมีชนิดข้อมูลเดียวกันและมีข้อมูลประเภทเดียวกัน แต่ไม่จําเป็นต้องมีชื่อเดียวกัน |
| compopr | ตัวดําเนินการเปรียบเทียบเชิงสัมพันธ์ใดๆ ได้แก่ "=," "<,"> "<"=", ">=," หรือ "."<> |
ข้อสังเกต
ใช้การดําเนินการ LEFT JOIN เพื่อสร้างการรวมภายนอกด้านซ้าย การรวมภายนอกด้านซ้ายรวมระเบียนทั้งหมดจากตารางแรก (ซ้าย) ของสองตาราง แม้ว่าจะไม่มีค่าที่ตรงกับระเบียนในตารางที่สอง (ขวา) ก็ตาม
ใช้การดําเนินการ RIGHT JOIN เพื่อสร้างการรวมภายนอกด้านขวา การรวมภายนอกด้านขวารวมระเบียนทั้งหมดจากตารางที่สอง (ขวา) ของสองตาราง แม้ว่าจะไม่มีค่าที่ตรงกับระเบียนในตารางแรก (ซ้าย) ก็ตาม
ตัวอย่างเช่น คุณสามารถใช้ LEFT JOIN กับตาราง Department (ซ้าย) และ Employees (ขวา) เพื่อเลือกทุกแผนก รวมถึงแผนกที่ไม่มีลูกจ้างกําหนดไว้ด้วย เมื่อต้องการเลือกพนักงานทั้งหมด รวมถึงผู้ที่ไม่ได้กําหนดให้กับแผนกใดๆ คุณต้องใช้ 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 ข้อผิดพลาดจะเกิดขึ้น