DB2 SQL查找提供特定颜色的供应商ID

时间:2018-12-19 20:48:22

标签: sql db2

查找提供红色或蓝色的供应商ID。无需使用join语句就能做到这一点。

num     suppliers    color 
------  ------- --------
 1       Sam     yellow
 2       Ana     black 
 3       Eva     red 
 4       Tom     blue
 5       Simon   blue
 6       Ema     green

  id   num
 ---- ------
  01   1
  02   2
  03   3  
  04   4
  05   5
  05   4

结果应该是这样的:

  id   suppliers  color
 ----- ------ -------
  03    Eva    red
  04    Tom    blue
  05    Simon  blue
  05    Tom    blue

我的解决方案是这样,但是仍然没有给我应有的结果。 有人可以帮我吗?

 select id, suppliers, color
 from suppliers, parts 
 where color = 'blue' or color = 'red';

1 个答案:

答案 0 :(得分:2)

您已经在进行联接-一个用逗号分隔的隐式联接。

今天的提示:始终使用现代的,明确的JOIN语法。 更容易编写(没有错误),更易于阅读和维护,并在需要时更容易转换为外部联接!

select p.id, s.suppliers, s.color
from suppliers s
JOIN parts p ON s.num = p.num
where s.color IN ('blue', 'red')

还要使用表别名(sp)并限定列,例如s.num

免注册版本:

select *
from
(
    select p.id,
           (select s.suppliers from suppliers s where s.num = p.num) suppliers,
           (select s.color from suppliers s where s.num = p.num) color
    from parts p
) dt
where color in ('blue', 'red');