我正在使用两张桌子: 表一:order_table 表二:order_details
order_table:
- Order ID (pk)
- Submitter
- Date
order_detail:
- Order_detail_id (unique, auto generated)
- parent_order (fk, points to the order_id this line is part of)
- date
- assigned_to (i.e. department1, department2, department3, department4)
等
一个订单可以有多个订单详细信息 例如
Order_detail_id parent_order assigned_to
0000001 0010 department1
0000002 0010 department2
0000003 0010 department1
0000004 0010 department1
0000005 0011 department1
0000006 0011 department2
0000007 0011 department3
如您所见,可以在部门之间来回分配订单。
我要做的是获取从未分配给特定部门的所有订单的列表,无论他们来回分配多少次。 例如,从未在department2的任何位置分配的所有唯一订单号 到目前为止,我得到的任何内容或所有数据都包含了de department2 ...
我尝试了很多不同的方法,但我无法获得预期的结果。谢谢你的帮助
答案 0 :(得分:2)
以下是获取从未分配给特定部门的订单的一种方法:
select od.parent_order
from order_detail od
group by od.parent_order
having sum(case when assigned_to = 'department2' then 1 else 0 end) = 0;
我喜欢这种方法,因为它很通用。在您的情况下,以下可能更有效:
select o.*
from orders o
where not exists (select 1
from order_details od
where od.parent_order = o.orderid and
od.assigned_to = 'department2'
);