2013-05-13 64 views
0

所以,我想选择是完全不活动的MySQL的加入客户。我有以下声明选择具有有效服务订单的所有客户。没有与有效订单的MySQL选择客户JOIN

SELECT DISTINCT u.* FROM users u INNER JOIN orders o ON o.assigned=u.id AND o.status!=0 

这工作得很好。但是现在我试图选择先前有订单但订单已停用的客户(o.status将等于0)。我有以下声明(即接近),但它返回的客户仍然有活动的订单,但有另一个已停用的订单。

SELECT DISTINCT u.* FROM users u INNER JOIN orders o ON o.assigned=u.id AND o.status!=1 

所以在外行方面,基本上客户可以有多个服务订单。每项服务都是独立的,我想选择完全停用的客户。例如:

苏珊具有2个服务订单,1被激活,而另一个去激活。目前,Susan正在被停用并且不正确的用户列表中。只有订单完全停用的客户。

谢谢!

回答

0
SELECT u.* 
    FROM users u 
    LEFT 
    JOIN orders o 
    ON o.assigned=u.id 
    AND o.status!=0 
WHERE o.assigned IS NULL; 

或类似的东西

0

为了解释这种情况下,你需要做一个WHERE子句将包括对SELECT语句。

例如:

select distinct u.* from users u inner join orders o 
on o.assigned=u.id and o.status!=1 
where u.id != (select distinct s.id from users s inner join orders r 
on r.assigned = s.id and r.status!=0 where s.id == u.id) 
相关问题