2012-07-24 153 views
-1

有两个表 - 一个包含员工详细信息,另一个包含订单详细信息。sql加入where子句

我如何找到在特定日期没有下订单的员工的姓名?

我使用左外连接,我的代码是这样的

SELECT 
    emp.FirstName+' '+emp.LastName AS 'FullName', emp.employeeid 
FROM Employee emp 
    INNER JOIN Orders oON emp.EmployeeID=o.EmployeeID 
WHERE 
    o.OrderDate NOT IN (SELECT o.OrderDate FROm Orders o WHERE o.OrderDate='4/4/1997') 
GROUP BY 
    emp.FirstName+' '+emp.LastName, emp.employeeid 

但问题是,它把所有的人在列表中.......请帮助我,请其紧迫

回答

0
SELECT FirstName + ' ' + LastName AS 'FullName', 
     employeeid 
FROM Employee 
where EmployeeID not in (select EmployeeID 
         from Orders 
         where OrderDate = '1997-04-04') 
+0

thnks fr help: SELECT emp.FirstName +''+ emp.LastName AS'FullName',emp.employeeid FROM Employee emp LEFT JOIN Orders ø ON emp.EmployeeID = o.EmployeeID而o.OrderDate = '4 1997/4 /' 其中o.EmployeeID为空 GROUP BY emp.FirstName +”“+ emp.LastName,emp.employeeid 这是解决方案 – ashi 2012-07-24 08:18:46

1

的一种方法是使用不存在

SELECT 
    emp.FirstName+' '+emp.LastName AS 'FullName', emp.employeeid 
FROM Employee emp 
where not exists 
    (select * from Orders o ON where emp.EmployeeID=o.EmployeeID 
     and o.OrderDate='4/4/1997' 
    ) 
3
SELECT emp.FirstName+' '+emp.LastName AS 'FullName', emp.employeeid 
FROM Employee emp LEFT JOIN Orders o 
ON emp.EmployeeID=o.EmployeeID And o.OrderDate='4/4/1997' 
where o.EmployeeID is null 
GROUP BY emp.FirstName+' '+emp.LastName, emp.employeeid 

试试这个。应该管用。和评论答案,因为我不能在我的本地测试...

+1

我们伟大的人非常感谢你.....你已经解决了一个很大的问题......上帝保佑你亲爱的......很多谢谢 – ashi 2012-07-24 08:15:01

+1

如果这个答案帮助你解决了你的问题,你应该[**接受此答案**](http://meta.stackexchange.com/q/5234/153998)。这将表明你感谢那些花时间帮助你的人* – 2012-07-24 08:25:14