Mysql 选择未由任何员工订购的产品
我想获取Mysql 选择未由任何员工订购的产品,mysql,Mysql,我想获取员工未订购的产品ID列表 我有一个查询,它给了我所有已订购的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
员工未订购的产品ID
列表
我有一个查询,它给了我所有已订购的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
使用left join
并检查NULL
:
select distinct e.EmployeeID ,p.ProductID
from Products p
left join OrderDetails od on od.ProductID=p.ProductID
left join Orders o on o.OrderID=od.OrderID
left join Employee e on e.EmployeeID=o.EmployeeID
where e.EmployeeName IS NULL
order by e.EmployeeID
如果employee
表中没有关联的员工记录,则返回订单详细信息
编辑:
试试这个:
select e1.EmployeeID,p1.ProductID
from Employee e1, p1.ProductID
where e1.EmployeeID NOT IN
( select distinct e.EmployeeID 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)
and p1.ProductID NOT IN
( select distinct 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)
如果您提供一些示例数据和表结构,我们可以进行更好的查询。试试看-
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
left join Employee e on e.EmployeeID=o.EmployeeID
where e.EmployeeID is null
order by o.EmployeeID;
按e.EmployeeID订购说明订购产品但未订购产品的订单员工请详细说明:您需要第一个订购产品的员工,然后是那些未订购的员工?员工列表和他未订购的产品此问题不清楚。请澄清它,包括在下面的评论中提出的观点,或删除它。它返回nothing@srimouni:请检查表订单
,订单详情
和员工
,如果至少有一名员工没有订购任何产品。是的,有一些员工没有订购带有产品的特定产品id@srimouni:您能在问题中提供一些示例数据吗?我只想显示19,因为员工1没有订购id为9的产品。如果对您不可行,请显示示例数据以及您需要或创建SqlFIDLE的输出。从逻辑上讲,这应该为您提供所需的结果。1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 10 1 11 12它应该显示1 9这是一个谜题吗?:)