-1

There are two tables - one consist of employee details, and the other contains the order details.

How can I find the name of employee who did not place any order on particular date?

I am using left outer join and my code is like this

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

but the problem is that its take all the persons in the list.

4

3 に答える 3

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

これを試してください。動作するはずです。ローカルでテストできなかったので、コメントの回答...

于 2012-07-24T07:26:57.930 に答える
1

1 つの方法は、not exists を使用することです

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' 
    )
于 2012-07-24T07:20:03.073 に答える
0
SELECT FirstName + ' ' + LastName AS 'FullName', 
       employeeid 
FROM Employee
where EmployeeID not in (select EmployeeID 
                         from Orders 
                         where OrderDate = '1997-04-04')
于 2012-07-24T07:16:31.203 に答える