C# c语言中的SQL查询
我的SQL查询可能有问题。在这个查询中,我将组合4个不同的表 我有一个课程表,其中一般信息存储在课程号、课程名称中。 我有一个表employees,其中存储了员工的一般信息empname和一个job_id。 雇员有工作。员工需要参加课程。这取决于他必须参加的课程。此信息存储在带有作业id和课程id的表job_course中。 如果员工完成了一门课程,则该课程将存储在表emp_courses中,其中包含e_id和课程id 现在我想搜索一个特定的课程-当用户按下搜索按钮时,他应该会得到两个不同的结果 第一个:在这里,您可以看到哪个员工已经参加了这门课程。到目前为止,这个查询是有效的 第二个:在这里你可以看到哪个员工还需要参加课程。因此,我需要检查员工的工作以及他是否需要参加课程。而且我只想要那些还没有完成的。 这就是不起作用的查询 这是:C# c语言中的SQL查询,c#,sql,join,C#,Sql,Join,我的SQL查询可能有问题。在这个查询中,我将组合4个不同的表 我有一个课程表,其中一般信息存储在课程号、课程名称中。 我有一个表employees,其中存储了员工的一般信息empname和一个job_id。 雇员有工作。员工需要参加课程。这取决于他必须参加的课程。此信息存储在带有作业id和课程id的表job_course中。 如果员工完成了一门课程,则该课程将存储在表emp_courses中,其中包含e_id和课程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 + "'");
有人能帮我做这个吗?这个员工还没有上过的课程
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}
)
)
员工没有参加的课程
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}
)
)
可能重复的抖动-不要像那样连接输入;请使用where course_编号,如@coursenumber,并添加一个名为@coursenumber的参数,可能是抖动的重复-不要像那样连接输入;请使用where course_编号,比如@coursenumber,并添加一个名为@coursenumber的参数,someid是什么意思。。。在您的查询中,我无法将存储的课程号与用户键入的课程号进行比较。。我应该提到:用户可以输入cours_编号,当他按下搜索按钮时,它将被存储:string coursenumber=this.textBox1.Text;所以输入的值会代替它。我不能把任何东西放在那里,因为它必须供应。有许多不同的方法可以从很多不同的角度查询数据库,但我认为第二个查询正是您要查找的。将用户输入的内容插入其中,并获取未参加该特定课程的员工。哦,但课程id不是课程编号。。所以我还需要课程表。。。但除此之外,你的查询看起来不错@meilenea如果回答了,请单击投票系统下方的复选框将其标记为答案。谢谢哦,谢谢你的最后一个!不,我只需要比较一下。。。但我想我可以自己做到;你们说的“某某”是什么意思。。。在您的查询中,我无法将存储的课程号与用户键入的课程号进行比较。。我应该提到:用户可以输入cours_编号,当他按下搜索按钮时,它将被存储:string coursenumber=this.textBox1.Text;所以输入的值会代替它。我不能把任何东西放在那里,因为它必须供应。有许多不同的方法可以从很多不同的角度查询数据库,但我认为第二个查询正是您要查找的。将用户输入的内容插入其中,并获取未参加该特定课程的员工。哦,但课程id不是课程编号。。所以我还需要课程表。。。但除此之外,你的查询看起来不错@meilenea如果回答了,请单击投票系统下方的复选框将其标记为答案。谢谢哦,谢谢你的最后一个!不,我只需要比较一下。。。但我想我可以自己做到;