ตาราง employees มีคอลัมน์ emp_id, name, salary, department_id และตาราง departments มีคอลัมน์ dept_id, dept_name ต้องการแสดงชื่อพนักงาน เงินเดือน และชื่อแผนก คำสั่ง SQL ใดถูกต้อง

SELECT e.name, e.salary, d.dept_name FROM employees e JOIN departments d ON e.emp_id = d.dept_id;
SELECT e.name, e.salary, d.dept_name FROM employees e JOIN departments d ON e.department_id = d.dept_id;
SELECT name, salary, dept_name FROM employees, departments WHERE emp_id = dept_id;
SELECT e.name, e.salary, d.dept_name FROM employees e INNER JOIN departments d ON e.department_id = e.dept_id;

เฉลยอธิบาย

คำตอบที่ถูกต้องคือ B เพราะใช้ JOIN เชื่อมตาราง employees และ departments โดยกำหนดเงื่อนไข ON e.department_id = d.dept_id ซึ่งเป็นการจับคู่คอลัมน์ที่ถูกต้อง ตัวเลือก B ผิดเพราะเชื่อมด้วย emp_id กับ dept_id ซึ่งไม่ใช่คีย์ที่สัมพันธ์กัน ตัวเลือก C ผิดเพราะเงื่อนไข WHERE ใช้ emp_id = dept_id ซึ่งไม่ถูกต้อง ตัวเลือก D ผิดเพราะเงื่อนไข ON ใช้ e.dept_id ซึ่งไม่มีในตาราง employees

ข้อสอบอื่นในวิชาการใช้ภาษา SQL

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