การแก้ไขคำสั่ง SQL เพื่อให้ได้ผลลัพธ์ของคิวรีที่ตรงจุด
นำไปใช้กับ
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

ถ้าคิวรีของคุณทํางานไม่เต็มที่ การเพิ่มคําสั่ง SQL พื้นฐานบางอย่างสามารถช่วยเน้นผลลัพธ์ของคุณได้ มาดูที่ชนิดของคําสั่ง SQL และส่วนคําสั่งหรือส่วนต่างๆ ที่คุณอาจแก้ไขเพื่อให้ได้ผลลัพธ์ตามที่คุณต้องการ

ในบทความนี้

การสร้างคำสั่ง Select

คําสั่ง SQL Select มีส่วนคําสั่งสองถึงสามส่วนคําสั่ง ส่วนคําสั่ง SELECT จะบอกตําแหน่งที่จะค้นหาข้อมูลในฐานข้อมูล และขอให้ฐานข้อมูลส่งกลับผลลัพธ์ที่เฉพาะเจาะจง

หมายเหตุ:  คำสั่ง SELECT มักจะลงท้ายด้วยเครื่องหมายอัฒภาค (;) โดยจะอยู่หลังส่วนคำสั่งสุดท้าย หรือจะอยู่ตอนท้ายบรรทัดเดียวกันของคำสั่ง SQL นั้น

คําสั่ง Select ต่อไปนี้จะขอให้ Access รับข้อมูลจากคอลัมน์ ที่อยู่อีเมล และ บริษัท จากตาราง ที่ติดต่อ โดยเฉพาะที่ซึ่งพบ "ซีแอตเทิล" ในคอลัมน์ เมือง

แท็บวัตถุ SQL ที่แสดงคำสั่ง SELECT

คิวรีข้างบนนี้มีอยู่ 3 ส่วนคำสั่ง คือ SELECT, FROM และ WHERE

1. ส่วนคําสั่ง SELECT จะแสดงคอลัมน์ที่มีข้อมูลที่คุณต้องการใช้และมีตัวดําเนินการ (SELECT) ตามด้วยตัวระบุสองตัว (ที่อยู่อีเมลและบริษัท) ถ้าตัวระบุมีช่องว่างหรืออักขระพิเศษ (เช่น "ที่อยู่อีเมล") ให้ใส่ตัวระบุไว้ในวงเล็บเหลี่ยม

2. ส่วนคําสั่ง FROM จะระบุตารางต้นฉบับ ในตัวอย่างนี้ จะมีตัวดําเนินการ (FROM) ตามด้วยตัวระบุ (ที่ติดต่อ)

3. ส่วนคําสั่ง WHERE เป็นส่วนคําสั่งเสริม ตัวอย่างมีตัวดําเนินการ (WHERE) ตามด้วยนิพจน์ (City="Seattle")

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับคิวรีแบบใช้เลือกข้อมูล ให้ดูที่ สร้างคิวรีแบบใช้เลือกข้อมูลอย่างง่าย

ต่อไปนี้คือรายการส่วนคำสั่งทั่วๆ ไปของ SQL

ส่วนคำสั่ง SQL

หน้าที่

จำเป็น ไหม

SELECT

แสดงเขตข้อมูลที่มีข้อมูลที่สนใจ

ใช่

FROM

แสดงตารางที่มีเขตข้อมูลที่ปรากฏอยู่ในส่วนคำสั่ง SELECT

ใช่

WHERE

ระบุเกณฑ์เขตข้อมูลที่ใช้เลือกระเบียนที่จะรวมอยู่ในผลลัพธ์

ไม่ใช่

ORDER BY

ระบุวิธีเรียงลำดับผลลัพธ์

ไม่ใช่

GROUP BY

ในคำสั่ง SQL ที่มีฟังก์ชันการรวม จะแสดงเขตข้อมูลที่ไม่ถูกสรุปรวมอยู่ในส่วนคำสั่ง SELECT

เฉพาะเมื่อมีเขตข้อมูลเหล่านี้เท่านั้น

HAVING

ในคำสั่ง SQL ที่มีฟังก์ชันการรวม จะระบุเกณฑ์ซึ่งใช้กับเขตข้อมูลที่ถูกสรุปรวมอยู่ในคำสั่ง SELECT

ไม่ใช่

แต่ละส่วนคําสั่ง SQL ประกอบด้วยข้อกําหนด ต่อไปนี้คือรายการของคํา SQL ทั่วไปบางส่วน

คำที่ใช้ใน SQL

คำจำกัดความ

ตัวอย่าง

ตัวระบุ

ชื่อที่คุณใช้เพื่อระบุวัตถุฐานข้อมูล เช่น ชื่อคอลัมน์ เป็นต้น

[E-mail Address] และ Company

ตัวดำเนินการ

คำสำคัญที่แทนการกระทำหรือปรับเปลี่ยนการกระทำ

AS

ค่าคงที่

ค่าที่ไม่เปลี่ยนแปลง เช่น ตัวเลข หรือค่า NULL

42

นิพจน์

การผสมรวมตัวระบุ ตัวดำเนินการ ค่าคงที่ และฟังก์ชันเข้าด้วยกันเพื่อนำมาประเมินให้ได้ค่าค่าเดียว

>= Products.[Unit Price]

ด้านบนของหน้า

การกำหนดส่วนคำสั่ง SELECT เอง

การกำหนดเอง

ตัวอย่าง

ถ้าต้องการดูเฉพาะค่าที่แตกต่าง

ให้ใช้คำสำคัญ DISTINCT ในส่วนคำสั่ง SELECT ของคุณ

ตัวอย่างเช่น ถ้าลูกค้าของคุณมาจากสำนักงานสาขาต่างๆ หลายสาขาและบางรายมีหมายเลขโทรศัพท์เดียวกัน แล้วคุณต้องการให้หมายเลขโทรศัพท์แสดงครั้งเดียวเท่านั้น ส่วนคำสั่ง SELECT ของคุณจะเป็นแบบนี้

SELECT DISTINCT [txtCustomerPhone] 

ถ้าต้องการเปลี่ยนแปลงวิธีที่ตัวระบุปรากฏอยู่ในมุมมอง Datasheet เพื่อให้สามารถอ่านได้ดียิ่งขึ้น

ใช้ตัวดําเนินการ AS (คําสําคัญที่แสดงถึงการกระทําหรือปรับเปลี่ยนการกระทํา) ด้วยนามแฝงของเขตข้อมูลในส่วนคําสั่ง SELECT ของคุณ นามแฝงของเขตข้อมูลคือชื่อที่คุณกําหนดให้กับเขตข้อมูลเพื่อทําให้อ่านผลลัพธ์ได้ง่ายขึ้น

SELECT [txtCustPhone] AS [Customer Phone]

การกำหนดส่วนคำสั่ง FROM เอง

การกำหนดเอง

ตัวอย่าง

คุณสามารถใช้นามแฝงของตารางหรือชื่ออื่นที่คุณกําหนดให้กับตารางในคําสั่ง Select นามแฝงของตารางจะมีประโยชน์ถ้าชื่อของชื่อตารางมีความยาว โดยเฉพาะเมื่อคุณมีหลายเขตข้อมูลที่มีชื่อเดียวกันจากตารางต่างๆ

ถ้าต้องการเลือกข้อมูลจากสองเขตข้อมูลที่มีชื่อเดียวกันว่า ID โดยเขตข้อมูลหนึ่งมาจากตาราง tblCustomer และอีกเขตข้อมูลมาจากตาราง tblOrder ให้ใช้แบบนี้

SELECT [tblCustomer].[ID],  [tblOrder].[ID]

ใช้ตัวดำเนินการ AS เพื่อกำหนดนามแฝงของตารางในส่วนคำสั่ง FROM ดังนี้

FROM [tblCustomer] AS [C],  [tblOrder] AS [O] 

จากนั้นคุณสามารถใช้นามแฝงของตารางเหล่านี้ในส่วนคำสั่ง SELECT ได้ดังนี้

SELECT [C].[ID],  [O].[ID]

ใช้การรวมเพื่อรวมระเบียนสองระเบียนจากแหล่งข้อมูลสองแหล่งให้เป็นผลลัพธ์เดียว หรือเพื่อระบุว่าจะรวมระเบียนจากตารางใดตารางหนึ่งหรือไม่ ถ้าไม่มีระเบียนที่สอดคล้องกันในตารางที่เกี่ยวข้อง

รวมตารางเพื่อให้คิวรีรวมรายการต่างๆ จากตาราง และแยกรายการต่างๆ เมื่อไม่มีระเบียนที่สอดคล้องกันในตารางอื่น

ส่วนคําสั่ง FROM อาจมีลักษณะดังนี้:

FROM [tblCustomer] INNER JOIN [tblOrder]ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID] 

เกี่ยวกับการใช้การรวม

การรวมมีอยู่สองชนิด คือการรวมภายในและภายนอก การรวมภายในใช้กันทั่วไปในคิวรี เมื่อคุณเรียกใช้คิวรีที่มีการรวมภายใน ผลลัพธ์จะแสดงเฉพาะรายการที่มีค่าร่วมอยู่ในทั้งสองตารางที่รวมกัน

การรวมภายนอกจะระบุว่าจะรวมข้อมูลที่ไม่มีค่าร่วมอยู่หรือไม่ การรวมภายนอกเป็นแบบกําหนดทิศทาง ซึ่งหมายความว่าคุณสามารถระบุว่าจะรวมระเบียนทั้งหมดจากตารางแรกที่ระบุในการรวม (เรียกว่าการรวมด้านซ้าย) หรือรวมระเบียนทั้งหมดจากตารางที่สองในการรวม (เรียกว่าการรวมด้านขวา) การรวมภายนอกมีไวยากรณ์ SQL ดังต่อไปนี้:

FROM table1 [ LEFT | RIGHT ] JOIN table2ON table1.field1 = table2.field2

ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้การรวมในคิวรีใน การรวมตารางและคิวรี

ด้านบนของหน้า

การกำหนดส่วนคำสั่ง WHERE เอง

ส่วนคําสั่ง WHERE มีเกณฑ์ที่ช่วยจํากัดจํานวนรายการที่ส่งกลับในคิวรี ดู ตัวอย่างของเกณฑ์คิวรี และวิธีการทํางาน

ตัวอย่างของวิธีที่คุณสามารถกําหนดส่วนคําสั่ง WHERE พื้นฐานเองได้คือการจํากัดผลลัพธ์ของคิวรี สมมติว่าคุณต้องการค้นหาหมายเลขโทรศัพท์ของลูกค้า และสามารถจํานามสกุลของเขาเป็น เบเกิล เท่านั้น ในตัวอย่างนี้ นามสกุลจะถูกเก็บไว้ในเขตข้อมูล LastName ดังนั้นไวยากรณ์ SQL จะเป็นดังนี้

WHERE [LastName]='Bagel'

ใช้ส่วนคําสั่ง WHERE เพื่อรวมแหล่งข้อมูลสําหรับคอลัมน์ที่มีข้อมูลที่ตรงกัน แต่มีชนิดข้อมูลต่างกัน การดําเนินการนี้มีประโยชน์เนื่องจากคุณไม่สามารถสร้างการรวมระหว่างเขตข้อมูลที่มีชนิดข้อมูลต่างกันได้ ใช้เขตข้อมูลหนึ่งเป็นเกณฑ์สําหรับอีกเขตข้อมูลหนึ่งด้วยคําสําคัญ LIKE ตัวอย่างเช่น ถ้าคุณต้องการใช้ข้อมูลจากตารางสินทรัพย์และตารางพนักงาน เฉพาะเมื่อชนิดของสินทรัพย์ในเขตข้อมูลชนิดสินทรัพย์ของตารางสินทรัพย์มีหมายเลข 3 ในเขตข้อมูลจํานวนของตารางพนักงาน ต่อไปนี้คือลักษณะส่วนคําสั่ง WHERE ของคุณ:

WHERE field1 LIKE field2

สิ่งสำคัญ:  คุณไม่สามารถระบุเกณฑ์สําหรับเขตข้อมูลที่ใช้กับฟังก์ชันการรวมในส่วนคําสั่ง WHERE ได้ แต่คุณสามารถใช้ส่วนคําสั่ง HAVING เพื่อระบุเกณฑ์สําหรับเขตข้อมูลที่ถูกรวมแทนได้

ด้านบนของหน้า

การกำหนดเองด้วยตัวดำเนินการ UNION

ใช้ตัวดําเนินการ UNION เมื่อคุณต้องการดูมุมมองรวมของผลลัพธ์จากคิวรีแบบใช้เลือกข้อมูลที่คล้ายกันหลายรายการ ตัวอย่างเช่น ถ้าฐานข้อมูลของคุณมีตารางผลิตภัณฑ์และตารางบริการ และทั้งคู่มีสามเขตข้อมูล: ข้อเสนอพิเศษหรือผลิตภัณฑ์หรือบริการ ราคา การรับประกัน หรือการรับประกัน แม้ว่าตารางผลิตภัณฑ์จะจัดเก็บข้อมูลการรับประกัน และตารางบริการจะจัดเก็บข้อมูลการรับประกัน แต่ข้อมูลพื้นฐานจะเหมือนกัน คุณสามารถใช้คิวรีแบบร่วมเพื่อรวมเขตข้อมูลทั้งสามจากสองตารางดังนี้:

SELECT name, price, warranty, exclusive_offerFROM ProductsUNION ALLSELECT name, price, guarantee, exclusive_offer FROM Services;

เมื่อคุณเรียกใช้คิวรี ข้อมูลจากแต่ละชุดเขตข้อมูลที่สอดคล้องกันจะถูกรวมเข้าด้วยกันเป็นเขตข้อมูลผลลัพธ์เดียว เมื่อต้องการรวมแถวที่ซ้ํากันไว้ในผลลัพธ์ ให้ใช้ตัวดําเนินการ ALL

หมายเหตุ:  คําสั่ง Select ต้องมีจํานวนเขตข้อมูลผลลัพธ์เท่ากัน ในลําดับเดียวกัน และมีชนิดข้อมูลเดียวกันหรือเข้ากันได้ สําหรับวัตถุประสงค์ของคิวรีแบบร่วม ชนิดข้อมูลตัวเลขและข้อความจะเข้ากันได้

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแบบสอบถามแบบร่วม โปรดดูที่ การใช้แบบสอบถามแบบร่วมเพื่อดูผลลัพธ์แบบรวมจากหลายแบบสอบถาม

ด้านบนของหน้า

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่

ต้องการตัวเลือกเพิ่มเติมหรือไม่

สํารวจสิทธิประโยชน์ของการสมัครใช้งาน เรียกดูหลักสูตรการฝึกอบรม เรียนรู้วิธีการรักษาความปลอดภัยอุปกรณ์ของคุณ และอื่นๆ