查找仅供应红色零件的供应商的Sid

时间:2019-07-10 14:42:07

标签: sql db2

还是一个SQL问题。

我要做的第一件事就是加入表格: 从目录c JOIN部分中选择SID p ON c.PID = p.PID; 我尝试了hading子句,但是我没有聚合函数,使用'where'是没有用的,因为这样我会得到所有提供红色部分的供应商。

是否有一个概括的答案?这样我也可以获得仅提供绿色零件的供应商?

所需的输出:

SID   
-----   
S2

提供的表格:

SELECT * FROM parts 

PID   PNAME      COLOR      WEIGHT CITY       
----- ---------- ---------- ------ ---------- 
P1    Nut        red            13 London     
P2    Bolt       black          18 Paris      
P3    Screw      red            17 Rome       
P4    Screw      silver         14 London     
P5    Cam        trans          12 Paris      
P6    Cog        cyan           19 London     
P7    Nut        magenta        15 -          
P8    Wheel      red            15 Munich     
P9    Bearing    green          15 Milano     

  9 record(s) selected. 


SELECT * FROM catalog 

SID   PID   COST         
----- ----- ------------ 
S1    P3            0.50 
S1    P4            0.50 
S1    P8           11.70 
S2    P1           16.50 
S2    P3            0.55 
S2    P8            7.95 
S3    P8           12.50 
S3    P9            1.00 
S4    P5            2.20 
S4    P6      1247548.23 
S4    P7      1247548.23 

  11 record(s) selected.

感谢您的大力帮助。

1 个答案:

答案 0 :(得分:0)

您确实想要聚合。一种方法是使用min()max()比较颜色:

select c.SID
from cat c JOIN
     part p
     ON c.PID = p.PID
group by c.SID
having min(p.color) = max(p.color) and  -- all colors are the same
       min(p.color) = 'red'             -- and that color is 'red'