1

我的 SQL 查询可能有问题。在这个查询中,我组合了 4 个不同的表。

  • 我有一个courses存储一般信息的表(course_numbercourse_title)。
  • 我有一张表employees,其中存储了员工的一般信息(empname和 a job_id)。
  • 员工有工作。员工需要参加课程。这取决于他必须参加哪些课程。此信息存储在表中job_course(带有job_idcourse_id)。
  • 如果员工完成了课程,则将其存储在表中emp_courses(带有e_idcourse_id

现在我想搜索某个课程 - 当用户按下搜索按钮时,他应该得到两个不同的结果。

  • 第一个:在这里你可以看到哪个员工已经上过这门课程(这个查询到目前为止有效)
  • 第二个:在这里你可以看到哪个员工还需要参加课程。所以我需要检查该员工从事的工作以及他是否需要参加该课程。而且我只想拥有那些尚未完成的。这就是不起作用的查询

这里是:

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 回答