当前位置: 首页 > 面试题库 >

C#中的SQL查询

栾峰
2023-03-14
问题内容

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

  • 我有一个courses用于存储常规信息的表(course_numbercourse_title)。
  • 我有一个表employees,用于存储员工的一般信息(empnamejob_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 + "'");

有人可以帮我吗?


问题答案:

员工未参加的课程。

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}
    )
)


 类似资料:
  • 问题内容: 我正在尝试从C#查询SQL Server数据库 我有课 我的查询中有问题。 当我给普通查询“从表中选择*”时,这给了我完美的结果。 但是当我尝试给出条件时,它给了我错误。有什么建议可以解决吗?谢谢。 问题答案: 钿狅笍 警告 此答案包含一个SQL注入安全漏洞。不要使用它。如该问题的其他一些答案所述(例如,Tony Hopkinson的答案),请考虑使用参数化查询。 尝试在where子句

  • 问题内容: 在C#中生成SQL查询的最安全的方法是什么,包括清除用户输入以防止注入?我正在寻找使用不需要外部库的简单解决方案。 问题答案: 使用Sql参数: http://msdn.microsoft.com/zh- cn/library/system.data.sqlclient.sqlparameter(v=vs.80).aspx 这是C#中的示例

  • 问题内容: 有没有办法观察将由生成的SQL语句? 例如,我有这个:是否 可以查看其基础的原始SQL? 问题答案: 光滑2.X: 您可以按照Slick文档中所示打印查询语句: 对于其他类型的报表看,和。 光滑的3.X: 文件。

  • 本文向大家介绍SQL中的子查询,包括了SQL中的子查询的使用技巧和注意事项,需要的朋友参考一下 子查询是查询内的查询,即嵌套查询。它放置在查询中,其结果用于进一步评估外部查询。 在SQL中,子查询必须遵循一些规则。其中一些是- 子查询应放在括号内。 子查询可以与不同的运算符(如<,>,<=,> =,IN,BETWEEN等)一起使用。还可以使用SELECT,INSERT,DELETE,UPDATE等

  • 问题内容: 在Oracle中,可以使用关键字返回SQL查询内部的内容,如下所示: 问题是: 有谁知道我在哪里可以找到相关文档? PortgreSQL(或任何其他开源DBMS)是否具有类似的功能? 问题答案: 它被称为CURSOR EXPRESSION,并在明显的地方记录了该文档:《 Oracle SQL参考》。 在这里找到它。 关于第二个问题,PostgreSQL提供的与此功能最接近的东西是“标量

  • 问题内容: 我刚刚开始在SQL Server数据库中查询XML。我在使用最基本的查询时遇到了麻烦。这是一个简化的示例。如何返回说明?下面的SELECT语句是我正在使用的内容,但未返回任何内容。 这是我正在使用的XML文件的代码段: 问题答案: 好吧,您错过了XML名称空间!:-) 试试这个: 魔术是 在此部分-它声明了对该XML数据进行查询期间的名称空间(带有您选择的前缀-可以是任何内容-在这里为