1

SQL クエリに問題がある可能性があります。このクエリでは、4 つの異なるテーブルを結合しています。

  • courses一般情報を格納するテーブルがあります ( course_numbercourse_title)。
  • employees従業員の一般情報が格納されているテーブルがあります ( empname、およびjob_id)。
  • 従業員には仕事があります。従業員はコースを受講する必要があります。彼がどのコースを取らなければならないかは、仕事によって異なります。この情報はテーブルに保存されますjob_course( と を使用job_id) course_id
  • 従業員がコースを修了した場合、それはテーブルに保存されますemp_courses(e_idおよびcourse_id)

ここで、特定のコースを検索したいと思います。ユーザーが検索ボタンを押すと、2 つの異なる結果が得られるはずです。

  • 最初のもの: ここでは、このコースをすでに受講した従業員を確認できます(このクエリは今のところ機能しています)
  • 2 つ目: ここでは、どの従業員がまだコースを受講する必要があるかを確認できます。そのため、従業員がどの仕事をしているか、そのコースを作成する必要があるかどうかを確認する必要があります。また、まだ完成していないものも欲しいです。そして、それは機能していないクエリです

ここにあります:

OpenDb_Open("select course_number,course_title, empname from course 
INNER JOIN (job_course INNER JOIN (employee INNER JOIN emp_course  
ON emp_course.e_id<>employee.e_id) ON job_course.job_id=employee.job_id) 
ON course.course_id=job_course.course_id 
where course_number like '" + coursenumber + "'");

誰かがこれで私を助けてくれますか?

4

1 に答える 1

1

従業員が受講していないコース。

SELECT * FROM courses
WHERE course_number IN (
    SELECT course_id FROM job_course
    WHERE course_id NOT IN (
        SELECT course_id FROM emp_courses
        WHERE emp_id = {someid}
    ) AND job_id = (
        SELECT job_id FROM employees
        WHERE emp_id = {user_input}
    )
)

どの従業員がまだコースを受講する必要があるか。

SELECT emp_name FROM employees
WHERE emp_id NOT IN (
    SELECT emp_id FROM emp_courses
    WHERE course_id = {user_input}
)

上記のバリアント。

SELECT emp_name FROM employees
WHERE emp_id NOT IN (
    SELECT emp_id FROM emp_courses
    WHERE course_id = (
        SELECT course_id FROM courses
        WHERE course_number = {user_input}
    )
)
于 2012-08-01T08:58:58.983 に答える