ถ้าคิวรีของคุณทํางานไม่เต็มที่ การเพิ่มคําสั่ง SQL พื้นฐานบางอย่างสามารถช่วยเน้นผลลัพธ์ของคุณได้ มาดูที่ชนิดของคําสั่ง SQL และส่วนคําสั่งหรือส่วนต่างๆ ที่คุณอาจแก้ไขเพื่อให้ได้ผลลัพธ์ตามที่คุณต้องการ
ในบทความนี้
- สร้างคำสั่ง Select
- การกำหนดส่วนคำสั่ง SELECT เอง
- การกำหนดส่วนคำสั่ง FROM เอง
- การกำหนดส่วนคำสั่ง WHERE เอง
- การกำหนดโดยใช้ตัวดำเนินการ UNION เอง
การสร้างคำสั่ง Select
คําสั่ง SQL Select มีส่วนคําสั่งสองถึงสามส่วนคําสั่ง ส่วนคําสั่ง SELECT จะบอกตําแหน่งที่จะค้นหาข้อมูลในฐานข้อมูล และขอให้ฐานข้อมูลส่งกลับผลลัพธ์ที่เฉพาะเจาะจง
หมายเหตุ
คำสั่ง SELECT มักจะลงท้ายด้วยเครื่องหมายอัฒภาค (;) โดยจะอยู่หลังส่วนคำสั่งสุดท้าย หรือจะอยู่ตอนท้ายบรรทัดเดียวกันของคำสั่ง SQL นั้น
คําสั่ง Select ต่อไปนี้จะขอให้ Access รับข้อมูลจากคอลัมน์ ที่อยู่อีเมล และ บริษัท จากตาราง ที่ติดต่อ โดยเฉพาะที่ซึ่งพบ "ซีแอตเทิล" ในคอลัมน์ เมือง
คิวรีข้างบนนี้มีอยู่ 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 ทั่วไปบางส่วน
การกำหนดส่วนคำสั่ง 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] [รหัสลูกค้า] |
เกี่ยวกับการใช้การรวม
การรวมมีอยู่สองชนิด คือการรวมภายในและภายนอก การรวมภายในใช้กันทั่วไปในคิวรี เมื่อคุณเรียกใช้คิวรีที่มีการรวมภายใน ผลลัพธ์จะแสดงเฉพาะรายการที่มีค่าร่วมอยู่ในทั้งสองตารางที่รวมกัน
การรวมภายนอกจะระบุว่าจะรวมข้อมูลที่ไม่มีค่าร่วมอยู่หรือไม่ การรวมภายนอกเป็นแบบกําหนดทิศทาง ซึ่งหมายความว่าคุณสามารถระบุว่าจะรวมระเบียนทั้งหมดจากตารางแรกที่ระบุในการรวม (เรียกว่าการรวมด้านซ้าย) หรือรวมระเบียนทั้งหมดจากตารางที่สองในการรวม (เรียกว่าการรวมด้านขวา) การรวมภายนอกมีไวยากรณ์ SQL ดังต่อไปนี้:
FROM table1 [ LEFT | RIGHT ] JOIN table2
ON 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_offer
FROM Products
UNION ALL
SELECT name, price, guarantee, exclusive_offer
FROM Services;
เมื่อคุณเรียกใช้คิวรี ข้อมูลจากแต่ละชุดเขตข้อมูลที่สอดคล้องกันจะถูกรวมเข้าด้วยกันเป็นเขตข้อมูลผลลัพธ์เดียว เมื่อต้องการรวมแถวที่ซ้ํากันไว้ในผลลัพธ์ ให้ใช้ตัวดําเนินการ ALL
หมายเหตุ
คําสั่ง Select ต้องมีจํานวนเขตข้อมูลผลลัพธ์เท่ากัน ในลําดับเดียวกัน และมีชนิดข้อมูลเดียวกันหรือเข้ากันได้ สําหรับวัตถุประสงค์ของคิวรีแบบร่วม ชนิดข้อมูลตัวเลขและข้อความจะเข้ากันได้
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแบบสอบถามแบบร่วม โปรดดูที่ การใช้แบบสอบถามแบบร่วมเพื่อดูผลลัพธ์แบบรวมจากหลายแบบสอบถาม