Select 用户使用 Ms Access 2003/2013 或 Sql 查询与 Approved list/table 关联

Select users associated to Approved list/table using Ms Access 2003/2013 or Sql query

[用户]

ID  |   UserID  |   City    |   Phone
----+-----------+-----------+----------
1   |   John    |   Rome    |   12345
2   |   Tom     |   Oslo    |   12345
3   |   Simon   |   Bogota  |   12345
4   |   Kurt    |   Tokyo   |   12345

[订单]

ID  |   UserID  |   OrderNr |   OrderName
------------------------------------------------
1   |   John    |   1       |   Apple
2   |   John    |   2       |   Carrots
3   |   John    |   3       |   Banana
4   |   Tom     |   3       |   Banana
5   |   Tom     |   1       |   Apple
6   |   Tom     |   8       |   Raisins
7   |   Simon   |   3       |   Banana
8   |   Simon   |   1       |   Apple
9   |   Kurt    |   7       |   Cucumber

批准列表

1 (Apple)
3 (Banana)
4 (Another order)
8 (Raisins)

现在我想 select 所有只订购的用户 contains/matches 我的批准列表。

在这种情况下,John 应该被排除在外,因为他订购的 Carrots 的 OrderNr 2 不在我批准的列表中。

如果您希望 只有 的用户在已批准列表中有订单,我建议使用条件聚合和 having 子句:

select o.userid
from orders as o
group by o.userid
having sum(iif(o.OrderNr not in (1, 3, 4, 8), 1, 0)) = 0;

having 子句过滤掉拥有 "unapproved" 产品的用户。