Tin*_*kan 3 c# sql asp.net ms-access join
我正在使用asp.NET和C#以及访问数据库来创建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';
Run Code Online (Sandbox Code Playgroud)
这是非常难看的,我知道..我希望,因为这是一个语法错误,它不会太难.
此查询旨在返回员工的姓名,电子邮件和部门.2用c#代码给出,并在代码的前面确定,但它代表某个部门.empDept表位于Departments表和employee表之间,因此员工可以在多个部门中.
任何帮助是极大的赞赏.谢谢
只需删除括号即可.它们强制数据库尝试将整个表达式视为单个表,这是不正确的.
此外,根据您的描述,我将编写查询以匹配连接中的部门与EmpDept表中的内容,然后使用WHERE子句过滤到dept'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';
Run Code Online (Sandbox Code Playgroud)