0

以下の表があります。

注文

Order_id     orde_number    Order_name  

1             12345          iphone

2             67891          samsung 

注文イベント

order_event_no      status

1                    D

1                    C

2                    C

以下のように取得するクエリを以下に書きましたが、2つのレコードが得られましたが、 1つが既にステータスとして含まれてstatus not in ('D')いるため、クエリは返されません。order_noD

select o.order_number,o.order_name 
  from order o 
  join order_event oe 
    on (o.order_id=oe.order_event_no) where oe.status not in ('D') 

よろしく、チャトゥ

4

3 に答える 3

1

これにより、指定されたスキーマ/データで目的が達成されます...

SELECT order_number, order_name
FROM order
WHERE order_id NOT IN (SELECT order_event_no FROM order_event WHERE status = 'D')
于 2012-10-26T19:43:37.483 に答える
0

これは同等です。一部のRDBMはそれをより速く実行します:

Select
  o.order_number,
  o.order_name
from
  order o
where
  not exists (
    select
      'x'
    from
      order_event oe
    where
      oe.order_event_no = o.order_id And
      oe.status = 'D'
  );
于 2012-10-26T19:52:44.047 に答える
0

「D」のようなステータスを持つオーダーを除外したい場合は、サブクエリが必要です。

select o.order_number,o.order_name 
from order o 
where oe.order_event_no 
NOT IN
    (SELECT order_event_no FROM order_event_no WHERE status = 'D')
于 2012-10-26T19:44:59.533 に答える