-1

我有两张桌子。

Customer                      |      OrderItems

CustomerID CustomerName       |      OrderItemID OrderID   CustomerID        Status

    1          ABC            |          1          1          1            Started
                                         2          1          1            Started
                              |          3          1          1            NotStarted

现在我想获取 orderItems 状态为 Completed 的所有客户的记录。在这种情况下意味着订单不完整。

所以如果我想获得未完成订单的状态,它应该给我的客户 1 是 order1。

即使这些项目是从第一个两个开始的,但我仍然想得到那个不完整的。

4

5 回答 5

0

选择 c.customerId,c.Customername,O.OrderID, from Customer c left join OrderItem O on C.customerID = o.OrderID where o.Status = 'started'

于 2013-06-21T12:17:29.023 回答
0
select OrderID, CustomerID, 
       SUM(case Status when 'Started' Then 0 Else 1) NS
from OrderItems
having NS > 0;
于 2013-06-21T12:22:35.887 回答
0
select OrderID, CustomerID, 
       SUM(case Status when 'NotStarted' Then 1 Else 0) NS
from OrderItems
group by OrderID, CustomerID
having NS > 0;
于 2013-06-21T12:09:28.443 回答
0

不确定我是否理解正确,但这应该可以完成工作:

select distinct c.CustomerId, oi.OrderId
from Customer c
inner join OrderItems oi on c.CustomerID = oi.CustomerID
where c.OrderId not in (select o.OrderId from OrderItems o where o.Status <> 'Started')
于 2013-06-21T12:10:32.147 回答
0

如果您只想要没有不完整订单的客户,那么这应该可以解决问题:

SELECT C.CustomerID, C.CustomerName
FROM Customer AS C
WHERE (((C.CustomerID) Not In 
   (SELECT DISTINCT [O].CustomerID
    FROM OrderItems AS O
    WHERE ((([O].Status)="NotStarted")))));

不过我想念一些东西:我认为应该有一个包含订单信息的 ORDER 表。如果您更改了一条记录的 customerID,则 OrderItems 表中的数据将不一致,假设 OrderItemID = 3,clientID 为 2。同一个订单是否有两个不同的客户?我想您没有处理所有信息并且有一个Order 表。

问候,

于 2013-06-21T12:42:17.143 回答