SQL与where子句连接

SQL与where子句连接,sql,join,Sql,Join,有两个表-一个包含员工详细信息,另一个包含订单详细信息 如何找到在特定日期未下订单的员工的姓名 我使用左外连接,我的代码如下 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.

有两个表-一个包含员工详细信息,另一个包含订单详细信息

如何找到在特定日期未下订单的员工的姓名

我使用左外连接,我的代码如下

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

但问题是它会把名单上的所有人都带走。

一种方法是使用“不存在”

SELECT FirstName + ' ' + LastName AS 'FullName', 
       employeeid 
FROM Employee
where EmployeeID not in (select EmployeeID 
                         from Orders 
                         where OrderDate = '1997-04-04')
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' 
    )

试试这个。应该有用。和评论答案,因为我无法在我的本地测试它…

u r great man非常感谢…你已经解决了一个大问题…上帝保佑你亲爱的…非常感谢如果这个答案帮助你解决了问题,你应该。这将表示您对那些花费自己的时间帮助您的人的感谢。fr help:选择emp.FirstName+''+emp.LastName作为'FullName',emp.emp中的emp.employeeid在emp.employeeid=o.employeeid和o.OrderDate='1997年4月4日',其中o.employeeid是emp.FirstName+''+emp.LastName的空组,emp.employeeid这是解决方案
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