0

私はこのクエリを書きましたが、エラーが発生します:

select c.sid
from catalog c
where exists ((select p.color from parts p)
except (select p2.color from parts p2 where p2.color != 'Red'));

ORA-00907: 右括弧がありません

どこが間違っているか教えていただけますか?

カタログ:

   SID        PID       COST

     1          3         .5
     1          4         .5
     1          8       11.7
     2          3        .55
     2          8       7.95
     2          1       16.5
     3          8       12.5
     3          9          1
     4          5        2.2
     4          6 1247548.23
     4          7 1247548.23

部品:

   PID PNAME                               COLOR

     1 Left Handed Bacon Stretcher Cover   Red
     2 Smoke Shifter End                   Black
     3 Acme Widget Washer                  Red
     4 Acme Widget Washer                  Silver
     5 I Brake for Crop Circles Sticker    Translucent
     6 Anti-Gravity Turbine Generator      Cyan
     7 Anti-Gravity Turbine Generator      Magenta
     8 Fire Hydrant Cap                    Red
     9 7 Segment Display                   Green
4

1 に答える 1

1

赤い部品だけを供給している業者の名前が知りたい

あなたは書ける:

SELECT c.sid
  FROM catalog c
  JOIN parts p
    ON p.pid = c.pid
 WHERE p.color = 'Red'
MINUS
SELECT c.sid
  FROM catalog c
  JOIN parts p
    ON p.pid = c.pid
 WHERE p.color <> 'Red'
;

の前の部分は、MINUS赤い部品を供給するすべてのサプライヤーを検索します。の後の部分は、赤以外の部品MINUSを供給するすべてのサプライヤーを検索します。したがって、クエリ全体で、赤色の部品のみを提供する個別のサプライヤがすべて検索されます。

于 2012-10-05T19:36:45.423 に答える