รวมระเบียนตารางต้นทางเมื่อใช้ในส่วนคำสั่ง 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 ข้อผิดพลาดจะเกิดขึ้น