ส่วนคำสั่ง HAVING ใน Access จะระบุว่าระเบียนที่จัดกลุ่มแล้วระเบียนใดจะแสดงในคำสั่ง SELECT พร้อมส่วนคำสั่ง GROUP BY หลังจากที่ส่วนคําสั่ง GROUP BY ได้รวมระเบียนแล้ว ส่วนคําสั่ง HAVING จะแสดงทุกระเบียนที่ถูกจัดกลุ่มไว้โดยส่วนคําสั่ง GROUP BY ซึ่งสอดคล้องกับเงื่อนไขของส่วนคําสั่ง HAVING
ไวยากรณ์
รายการเขตข้อมูล SELECT
ตาราง FROM
WHERE selectcriteria
GROUP BY groupfieldlist
[ HAVING groupcriteria]
คำสั่ง SELECT ที่มีส่วนคำสั่ง HAVING มีส่วนต่างๆ ดังนี้
| ส่วน | คำอธิบาย |
|---|---|
| fieldlist | ชื่อของเขตข้อมูลหนึ่งหรือหลายเขตข้อมูลที่จะถูกดึงออกมาพร้อมกันกับนามแฝงของชื่อเขตข้อมูลใดๆ , ฟังก์ชันการรวมของ SQL, เพรดิเคตการเลือก (ALL, DISTINCT, DISTINCTROW หรือ TOP) หรือตัวเลือกอื่นๆ ของคำสั่ง SELECT |
| table | ชื่อของตารางที่ระเบียนถูกดึงออกมา |
| selectcriteria | เกณฑ์การคัดเลือก ถ้าคําสั่งมีส่วนคําสั่ง WHERE กลไกจัดการฐานข้อมูลของ Microsoft Access จะจัดกลุ่มค่าต่างๆ หลังจากที่นําเงื่อนไข WHERE ไปใช้กับระเบียนแล้ว |
| groupfieldlist | ชื่อของเขตข้อมูลที่มีจํานวนมากถึง 10 เขตข้อมูลซึ่งใช้ในการจัดกลุ่มระเบียน ลําดับของชื่อเขตข้อมูลใน groupfieldlist จะกําหนดระดับการจัดกลุ่มจากระดับสูงสุดจนถึงระดับต่ําสุดของการจัดกลุ่ม |
| groupcriteria | นิพจน์ที่กำหนดว่าระเบียนที่ถูกจัดกลุ่มระเบียนใดบ้างที่จะแสดง |
ข้อสังเกต
ส่วนคำสั่ง HAVING จะมีหรือไม่มีก็ได้
ส่วนคําสั่ง HAVING จะคล้ายคลึงกับส่วนคําสั่ง WHERE ที่กําหนดว่าระเบียนใดบ้างที่จะถูกเลือก หลังจากที่ระเบียนถูกจัดกลุ่มกับส่วนคําสั่ง GROUP BY แล้ว ส่วนคําสั่ง HAVING จะกําหนดว่าจะแสดงระเบียนใดบ้าง ดังนี้
SELECT CategoryID,
Sum(UnitsInStock)
FROM Products
GROUP BY CategoryID
HAVING Sum(UnitsInStock) > 100 And Like "BOS*";
ส่วนคำสั่ง HAVING สามารถมีนิพจน์ได้ถึง 40 นิพจน์ซึ่งเชื่อมโยงกันด้วยตัวดำเนินการเชิงตรรกะ เช่น And และ Or