การแก้ไขคำสั่ง SQL เพื่อให้ได้ผลลัพธ์ของคิวรีที่ตรงจุด

การแก้ไขคำสั่ง SQL เพื่อให้ได้ผลลัพธ์ของคิวรีที่ตรงจุด

สิ่งสำคัญ:  บทความนี้เป็นการแปลด้วยเครื่อง โปรดดู ข้อจำกัดความรับผิดชอบ โปรดดูบทความฉบับภาษาอังกฤษ ที่นี่ เพื่อใช้อ้างอิง

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

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

ในบทความนี้

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

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

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

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

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

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

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

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

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

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

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

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

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

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 table2
ON table1.field1 = table2.field2

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

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

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

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

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

WHERE [LastName]='Bagel'

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

WHERE field1 LIKE field2

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

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

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

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

SELECT name, price, warranty, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee, exclusive_offer
FROM Services;

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

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

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

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

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

ขยายทักษะของคุณ
สำรวจการฝึกอบรม
รับฟีเจอร์ใหม่ก่อนใคร
เข้าร่วม Office Insider

ข้อมูลนี้เป็นประโยชน์หรือไม่

ขอบคุณสำหรับคำติชมของคุณ!

ขอขอบคุณสำหรับคำติชมของคุณ! เราคิดว่าอาจเป็นประโยชน์ที่จะให้คุณได้ติดต่อกับหนึ่งในตัวแทนฝ่ายสนับสนุน Office ของเรา

×