简体   繁体   English

WHERE上的SQL Server查询错误

[英]SQL Server Query Error on WHERE

SQL Server 2005 via C# (VS 20015). SQL Server 2005通过C#(VS 20015)。 Any idea why WHERE won't work? 知道为什么WHERE不起作用吗?

SQL statement is: SQL语句是:

SELECT 
    AA003Employee.idEmployee, 
    AA001Person.LastName, AA001Person.FirstName, 
    AA017JobTitle.JobTitle, AA017JobTitle.Department, 
    AA003Employee.Disabled 
FROM 
    AA003Employee 
JOIN 
    AA001Person ON AA003Employee.idPerson = AA001Person.idPerson 
JOIN 
    AA017JobTitle ON AA003Employee.idJobTitle = AA017JobTitle.idJobTitle 
ORDER BY 
    AA001Person.LastName ASC, AA001Person.FirstName ASC, 
    AA017JobTitle.JobTitle ASC 
WHERE 
    AA003Employee.Disabled = 'N';

Tried: 尝试:

  1. It works fine when omitting -> WHERE AA003Employee.Disabled = 'N' 省略 - > WHERE AA003Employee.Disabled = 'N'时工作正常

  2. It throws the error when I try replacing it with -> "... WHERE Disabled = 'N'"; 当我尝试用 - >“... WHERE Disabled = 'N'";替换它时,它会抛出错误WHERE Disabled = 'N'";

Here is a screenshot of the error: 以下是错误的屏幕截图:

截图

Your problem is the placement of the WHERE clause. 您的问题是WHERE子句的放置。 SQL cares about the order of the clauses in statements. SQL关心语句中子句的顺序。 But you should also learn to use table aliases: 但是你也应该学会使用表别名:

SELECT e.idEmployee, p.LastName, p.FirstName, jt.JobTitle, jt.Department, e.Disabled
FROM AA003Employee e JOIN
     AA001Person p
     ON e.idPerson = p.idPerson JOIN
     AA017JobTitle jt
     ON e.idJobTitle = jt.idJobTitle
WHERE e.Disabled = 'N'
ORDER BY p.LastName ASC, p.FirstName ASC, jt.JobTitle ASC;

See? 看到? The query is much easier to write and to read. 查询更容易编写和阅读。

Replace query with , 用,替换查询,

SELECT AA003Employee.idEmployee, AA001Person.LastName, AA001Person.FirstName, AA017JobTitle.JobTitle, AA017JobTitle.Department, AA003Employee.Disabled 
FROM AA003Employee 
JOIN AA001Person ON AA003Employee.idPerson=AA001Person.idPerson 
JOIN AA017JobTitle ON AA003Employee.idJobTitle=AA017JobTitle.idJobTitle 
WHERE AA003Employee.Disabled = 'N' 
ORDER BY AA001Person.LastName ASC, AA001Person.FirstName ASC, AA017JobTitle.JobTitle ASC 

Replace Query with below SQL Statement 用以下SQL语句替换Query

SELECT 
    AA003Employee.idEmployee, 
    AA001Person.LastName, 
    AA001Person.FirstName, 
    AA017JobTitle.JobTitle, 
    AA017JobTitle.Department, 
    AA003Employee.Disabled 

FROM AA003Employee 

JOIN AA001Person ON AA003Employee.idPerson=AA001Person.idPerson 
JOIN AA017JobTitle ON AA003Employee.idJobTitle=AA017JobTitle.idJobTitle 

WHERE AA003Employee.Disabled = 'N';

ORDER BY AA001Person.LastName ASC, AA001Person.FirstName ASC, AA017JobTitle.JobTitle ASC 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM