ในระบบห้องเรียน มีตาราง Classes (ClassID, ClassName) และ Students (StudentID, StudentName, ClassID) หากต้องการค้นหา "ชื่อห้องเรียนที่มีนักเรียนมากกว่า 30 คน" ควรใช้คำสั่ง SQL อะไร

SELECT ClassName FROM Classes WHERE ClassID IN (SELECT ClassID FROM Students GROUP BY ClassID HAVING COUNT(*) > 30)
SELECT DISTINCT ClassName FROM Classes, Students WHERE Classes.ClassID = Students.ClassID AND COUNT(*) > 30
SELECT ClassName FROM Classes WHERE ClassID = (SELECT ClassID FROM Students GROUP BY ClassID HAVING COUNT(*) > 30)
SELECT ClassName FROM Classes INNER JOIN Students ON Classes.ClassID = Students.ClassID WHERE COUNT(Students.StudentID) > 30

เฉลยอธิบาย

คำสั่งถูกต้องต้องใช้ GROUP BY เพื่อจัดกลุ่มนักเรียนตามห้องเรียน HAVING เพื่อกำหนดเงื่อนไข (COUNT > 30) และ IN เพื่อค้นหา ClassID ที่ตรงตามเงื่อนไข ตัวเลือก B ผิดเพราะไม่ควรใช้ COUNT ใน WHERE ต้องใช้ HAVING ตัวเลือก C ผิดเพราะใช้รูปแบบ Cartesian Product โดยไม่ถูกต้อง ตัวเลือก D ผิดเพราะใช้ = แทน IN ซึ่งจะค้นหาได้เพียงหนึ่งผลลัพธ์

ข้อสอบอื่นในวิชาความรู้ความสามารถในการวิเคราะห์ ออกแบบ ฐานข้อมูล

ดูข้อสอบวิชานี้ทั้งหมด →