c# - 带有括号的 FROM 子句的查询中的语法错误(缺少运算符)

标签 c# asp.net sql ms-access join

我正在使用 asp.NET 和 C# 以及 Access 数据库来创建 Web 应用程序。

我当前的问题是 SQL 语句。在项目中,我已经成功地使用字符串值来构建和存储查询。因为它存储在一个字符串中,所以看起来有点难看。问题在于我正在写的最后一个查询。它有 2 个内部连接,我不确定到底出了什么问题。 我得到的错误是语法错误(缺少运算符),然后它列出了括号内的所有内容。这是查询:

SELECT Employee.[First Name], Employee.[Last Name], Employee.[Email],
       Departments.[Department]
FROM (
    Employee INNER JOIN EmpDept ON Employee.[EmpUserName] = EmpDept.[EmpUserName]
    INNER JOIN Departments ON Departments.[Department Number] = '2'
)
WHERE Departments.[Campus]='Clarion';

我知道这样很难看。我希望因为这是一个语法错误所以不会太难。

此查询旨在返回员工的姓名、电子邮件和部门。 2是用c#代码给出的,在代码的前面已经确定了,但是它代表的是某个部门。 empDept 表位于 Departments 表和 employee 表之间,因此一名员工可以在多个部门中。

非常感谢任何帮助。谢谢

最佳答案

只需删除括号。他们强制数据库尝试将整个表达式视为单个表,这是不正确的。

此外,根据您的描述,我将编写查询以将连接中的部门与 EmpDept 表中的部门相匹配,然后使用 WHERE 子句过滤到部门“2”。现在,您将 Department 表过滤到部门“2”,但让它无条件地与查询的其余部分相关。这意味着您正在从任何部门提取员工记录。

最后,我认为养成使用表别名的习惯是一种很好的做法。它不仅使您的代码更短,而且更高级的查询通常会从同一个表的多个实例中提取,并且别名可以明确表示您指的是哪个表实例。

SELECT e.[First Name], e.[Last Name], e.[Email], d.[Department]
FROM Employee e
INNER JOIN EmpDept ed ON e.[EmpUserName] = ed.[EmpUserName]
INNER JOIN Departments d ON d.[Department Number] = ed.[Deptartment Number]
WHERE d.[Campus]='Clarion' AND d.[Department Number] = '2';

关于c# - 带有括号的 FROM 子句的查询中的语法错误(缺少运算符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15940336/

相关文章:

mysql - 从两个 MySQL 表中选择并分组

c# - 图像拖放(WPF 窗口)

c# - 从每一帧视频中捕获单个像素行并将它们编译在一起

c# - 将字符串作为参数从 C# 传递到 C++ 中的回调函数

asp.net - 是否可以在开发机器上模拟子域?

mysql - 带有子查询计算的复杂查询

c# - TFS 构建代理跳过所有测试

asp.net - Azure 应用服务中的异地复制

asp.net - 在 UpdatePanel 回发问题后调用 Javascript 函数

sql - 维蒂卡。子查询和外部查询分组中 HAVING 子句中当前时间的 GROUPING()