选择不加入的ID

时间:2015-08-17 05:27:50

标签: sql

我想获取ProductId尚未订购的Employee列表。

我有这个查询,它给了我所有已订购的ProductId,但我想要反过来:

SELECT distinct e.EmployeeID ,p.ProductID 
FROM Products p JOIN OrderDetails od 
  ON od.ProductID=p.ProductID JOIN Orders o 
  ON o.OrderID=od.OrderID JOIN Employee e 
  ON e.EmployeeID=o.EmployeeID 
order by e.EmployeeID

1 个答案:

答案 0 :(得分:0)

我不确定您的问题,但如果您想要没有员工关联的产品,可以试试这个:

SELECT distinct e.EmployeeID ,p.ProductID 
FROM Products p 
INNER JOIN OrderDetails od 
    ON od.ProductID=p.ProductID 
INNER JOIN Orders o 
    ON o.OrderID=od.OrderID 
LEFT JOIN Employee e 
    ON e.EmployeeID=o.EmployeeID 
WHERE e.EmployeeID is NULL
order by e.EmployeeID

我们的想法是选择所有订单(INNER JOIN)以及那些没有员工关联(LEFT JOIN)的订单。最后,你过滤掉那些没有关联的东西(IS NULL)。