นี่คือหนึ่งในชุดบทความเกี่ยวกับ Access SQL บทความนี้อธิบายวิธีการเขียนส่วนคําสั่ง FROM และใช้ตัวอย่างในการแสดงเทคนิคต่างๆ ที่คุณสามารถใช้ในส่วนคําสั่ง FROM
ในคําสั่ง SELECT ให้คุณระบุแหล่งข้อมูลในส่วนคําสั่ง FROM ส่วนคําสั่ง FROM อาจมีการดําเนินการ JOIN ด้วย คุณใช้การดําเนินการ JOIN เพื่อจับคู่และรวมข้อมูลจากสองแหล่งข้อมูล เช่น สองตาราง หรือตารางและคิวรี
สำหรับภาพรวมของ Access SQL ให้ดูบทความ Access SQL: แนวคิดพื้นฐาน คำศัพท์ และไวยากรณ์
ในบทความนี้
ระบุแหล่งข้อมูล
ในคำสั่ง SELECT ส่วนคำสั่ง FROM จะระบุตารางหรือคิวรีที่มีข้อมูลที่จะใช้ในส่วนคำสั่ง SELECT
สมมติว่าคุณต้องการทราบหมายเลขโทรศัพท์ของลูกค้าเฉพาะราย สมมติว่าตารางที่มีเขตข้อมูลที่จัดเก็บข้อมูลนี้เรียกว่า tblCustomer ส่วนคําสั่ง FROM จะมีลักษณะดังต่อไปนี้:
FROM tblCustomer
คุณสามารถใช้วงเล็บเหลี่ยมเพื่อล้อมรอบชื่อได้ ถ้าชื่อไม่มีช่องว่างหรืออักขระพิเศษใดๆ (เช่น เครื่องหมายวรรคตอน) วงเล็บเหลี่ยมจะใส่หรือไม่ก็ได้ ถ้าชื่อมีช่องว่างหรืออักขระพิเศษ คุณต้องใช้วงเล็บเหลี่ยม
เคล็ดลับ: ชื่อที่มีช่องว่างสามารถอ่านได้ง่ายขึ้นและสามารถช่วยคุณประหยัดเวลาเมื่อคุณออกแบบฟอร์มและรายงาน แต่อาจทําให้คุณพิมพ์ได้มากขึ้นเมื่อคุณเขียนคําสั่ง SQL คุณควรพิจารณาข้อเท็จจริงนี้เมื่อคุณตั้งชื่อวัตถุในฐานข้อมูล Access ของคุณ
ใช้ชื่อแทนสำหรับแหล่งข้อมูล
คุณสามารถใช้ชื่ออื่นเพื่ออ้างอิงถึงตารางในคําสั่ง SELECT โดยใช้นามแฝงของตารางในส่วนคําสั่ง FROM ของคุณ นามแฝงของตารางคือชื่อที่คุณกําหนดให้กับแหล่งข้อมูลในคิวรีเมื่อคุณใช้นิพจน์เป็นแหล่งข้อมูล หรือเพื่อทําให้คําสั่ง SQL พิมพ์และอ่านได้ง่ายขึ้น ซึ่งจะเป็นประโยชน์โดยเฉพาะอย่างยิ่งถ้าชื่อของแหล่งข้อมูลยาวหรือพิมพ์ได้ยาก โดยเฉพาะอย่างยิ่งเมื่อมีหลายเขตข้อมูลที่มีชื่อเดียวกันจากตารางต่างๆ
ตัวอย่างเช่น ถ้าคุณต้องการเลือกข้อมูลจากสองเขตข้อมูล ซึ่งทั้งสองรายการมีชื่อว่า ID โดยเขตข้อมูลหนึ่งมาจากตาราง tblCustomer และอีกเขตข้อมูลหนึ่งมาจากตาราง tblOrder ส่วนคำสั่ง SELECT ของคุณอาจมีลักษณะดังต่อไปนี้:
SELECT [tblCustomer].[ID], [tblOrder].[ID]
ด้วยการใช้นามแฝงของตารางในส่วนคําสั่ง FROM คุณสามารถทําให้คิวรีพิมพ์ได้ง่ายขึ้น ส่วนคําสั่ง FROM ของคุณที่มีนามแฝงของตารางอาจมีลักษณะดังต่อไปนี้:
FROM [tblCustomer] AS [C], [tblOrder] AS [O]
จากนั้น คุณสามารถนำนามแฝงของตารางเหล่านั้นมาใช้ในส่วนคำสั่ง SELECT ของคุณได้ โดยมีลักษณะดังต่อไปนี้
SELECT [C].[ID], [O].[ID]
หมายเหตุ: เมื่อคุณใช้นามแฝงของตาราง คุณสามารถอ้างอิงตารางในคำสั่ง SQL ของคุณได้โดยใช้นามแฝงนี้หรือใช้ชื่อเต็มของตารางนั้น
รวมข้อมูลที่เกี่ยวข้อง
เมื่อคุณต้องการวิธีรวมระเบียนสองระเบียนจากแหล่งข้อมูลสองแหล่งให้เป็นระเบียนเดียวในผลลัพธ์คิวรี คุณสามารถทําการรวมได้ การรวมคือการดําเนินการ SQL ที่ระบุว่าแหล่งข้อมูลสองแหล่งเกี่ยวข้องกันอย่างไร และควรรวมข้อมูลจากแหล่งข้อมูลหนึ่งหรือไม่ ถ้าไม่มีข้อมูลที่สอดคล้องกันจากแหล่งข้อมูลอื่น
เมื่อต้องการรวมข้อมูลจากแหล่งข้อมูลสองแหล่ง ให้คุณดําเนินการการรวมกับเขตข้อมูลที่พวกเขามีเหมือนกัน เมื่อค่าที่เก็บในเขตข้อมูลนี้ตรงกัน ข้อมูลจากระเบียนจะถูกรวมไว้ในผลลัพธ์
นอกจากการรวมข้อมูลแล้ว คุณยังสามารถใช้การรวมนี้เพื่อระบุว่าจะรวมถึงระเบียนจากตารางใดตารางหนึ่งหรือไม่เมื่อไม่มีระเบียนที่สอดคล้องในตารางที่สัมพันธ์กัน
ตัวอย่างเช่น สมมติว่าคุณต้องการใช้ข้อมูลจากสองตารางในคิวรี: tblCustomer และ tblOrder ทั้งสองตารางมีเขตข้อมูลรหัสลูกค้าที่ระบุถึงลูกค้า แต่ละระเบียนในตาราง tblCustomer อาจมีระเบียนที่สอดคล้องกันอย่างน้อยหนึ่งระเบียนในตาราง tblOrder และค่าที่สอดคล้องกันสามารถถูกกําหนดด้วยค่าในเขตข้อมูล CustomerID
ถ้าคุณต้องการรวมตารางเพื่อให้คิวรีรวมระเบียนจากตารางทั้งสองเข้าด้วยกัน โดยยกเว้นระเบียนจากตารางหนึ่งถ้าไม่มีระเบียนที่สอดคล้องกันในอีกตารางหนึ่ง ส่วนคำสั่ง FROM ของคุณอาจมีลักษณะดังต่อไปนี้ (เพิ่มตัวแบ่งบรรทัดเพื่อให้อ่านได้ง่าย):
FROM [tblCustomer] INNER JOIN [tblOrder]
ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID]
ใน Access การรวมจะเกิดขึ้นในส่วนคําสั่ง FROM ของคําสั่ง SELECT การรวมมีอยู่สองชนิด คือ การรวมภายในและการรวมภายนอก ส่วนต่อไปนี้จะอธิบายการรวมสองชนิดนี้
การรวมภายใน
การรวมภายในเป็นชนิดการรวมที่ใช้กันทั่วไปมากที่สุด เมื่อคิวรีที่มีการรวมภายในถูกเรียกใช้ เฉพาะระเบียนที่รวมอยู่ในผลลัพธ์คิวรีเท่านั้นคือระเบียนที่มีค่าร่วมอยู่ในทั้งสองตารางที่รวมกัน
การรวมภายในมีไวยากรณ์ดังต่อไปนี้ (เพิ่มตัวแบ่งบรรทัดเพื่อให้อ่านได้ง่าย):
FROM table1 INNER JOIN table2
ON table1.field1 compopr table2.field2
ตารางต่อไปนี้อธิบายถึงส่วนต่างๆ ของการดำเนินการ INNER JOIN
ส่วน |
คำอธิบาย |
table1, table2 |
ชื่อของตารางที่ระเบียนถูกรวม |
field1, field2 |
ชื่อของเขตข้อมูลที่รวมกัน ถ้าเขตข้อมูลไม่ใช่ตัวเลข เขตข้อมูลจะต้องเป็น ชนิดข้อมูล เดียวกันและมีข้อมูลชนิดเดียวกัน แต่ไม่จําเป็นต้องมีชื่อเดียวกัน |
compopr |
ตัวดำเนินการเปรียบเทียบเชิงสัมพันธ์ใดๆ ได้แก่ "=", "<", ">", "<=", ">=" หรือ "<>" |
การรวมภายนอก
การรวมภายนอกจะคล้ายกับการรวมภายใน เนื่องจากการรวมนั้นจะบอกคิวรีถึงวิธีการรวมข้อมูลจากสองแหล่งข้อมูล ค่าเหล่านี้จะแตกต่างกันเนื่องจากจะระบุว่าจะรวมข้อมูลที่ไม่มีค่าร่วมอยู่ด้วยหรือไม่ การรวมภายนอกเป็นแบบกําหนดทิศทาง คุณสามารถระบุว่าจะรวมระเบียนทั้งหมดจากแหล่งข้อมูลแรกที่ระบุในการรวม (เรียกว่าการรวมด้านซ้าย) หรือรวมระเบียนทั้งหมดจากแหล่งข้อมูลที่สองในการรวม (เรียกว่าการรวมด้านขวา)
การรวมภายนอกมีไวยากรณ์ดังต่อไปนี้:
FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1compopr table2.field2ตารางต่อไปนี้อธิบายถึงส่วนต่างๆ ของการดำเนินการ LEFT JOIN และ RIGHT JOIN
ส่วน |
คำอธิบาย |
table1, table2 |
ชื่อของตารางที่ระเบียนถูกรวม |
field1, field2 |
ชื่อของเขตข้อมูลที่รวมกัน เขตข้อมูลจะต้องเป็น ชนิดข้อมูล เดียวกันและมีข้อมูลชนิดเดียวกัน แต่ไม่จําเป็นต้องมีชื่อเดียวกัน |
compopr |
ตัวดำเนินการเปรียบเทียบเชิงสัมพันธ์ใดๆ ได้แก่ "=," "<," ">," "<=," ">=," หรือ "<>" |
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการรวม โปรดดูที่บทความ การรวมตารางและคิวรี