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

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

หมายเหตุ:  บทความนี้ใช้ไม่ได้กับเว็บแอป Access ซึ่งเป็นฐานข้อมูลประเภทที่คุณออกแบบด้วย Access และเผยแพร่แบบออนไลน์

ในบทความนี้

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

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

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

คำสั่ง Select ดังต่อไปนี้จะขอให้ Access รับข้อมูลจากจากคอลัมน์ E-mail Address และคอลัมน์ Company จากตาราง Contacts โดยให้หาคำว่า “Seattle” ในคอลัมน์ City โดยเฉพาะ

แท็บวัตถุ 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 ต้องมีจํานวนเขตข้อมูลผลลัพธ์เท่ากัน ในลําดับเดียวกัน และมีชนิดข้อมูลเดียวกันหรือเข้ากันได้ สําหรับวัตถุประสงค์ของคิวรีแบบร่วม ชนิดข้อมูลตัวเลขและข้อความจะเข้ากันได้

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

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

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

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

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

ชุมชนช่วยให้คุณถามและตอบคําถาม ให้คําติชม และรับฟังจากผู้เชี่ยวชาญที่มีความรู้มากมาย