2011-11-04 41 views
1

我有2个表:Customers和Orders。客户有很多订单,订单属于客户。订单可以批准(由approved_at字段标记)。 我想检索所有客户没有任何批准的订单。这包括没有任何订单的客户和未经批准的订单(approved_at = null)的客户。 我可以在没有子查询的单个查询中执行此操作吗?Sql检索另一个表中没有关系的字段

回答

1
SELECT ..., COUNT(Orders.id) AS cnt 
FROM Customers 
LEFT JOIN Orders ON (Customers.id = Orders.Customer_id) AND (Orders.approved_at is null) 
HAVING cnt = 0 
+0

我知道那是什么关系到 “有”。 虽然它错过了组。最后的查询是: 'SELECT Customers。*,COUNT(Orders.id)cnt' 'FROM Customers' 'LEFT JOIN Orders ON(Customers.id = Orders.Customer_id)AND(Orders.approved_at is null)' 'GROUP BY Customers.id' 'HAVING cnt = 0' – iwiznia

0
SELECT c.* 
FROM Customers c 
LEFT JOIN Orders o ON c.ID = o.CustomerID 
WHERE o.ID IS NULL OR c.Approved_at IS NULL 
相关问题