DB2 SQL Найдите идентификатор поставщиков, которые предоставляют определенный цвет - PullRequest
0 голосов
/ 19 декабря 2018

Найдите идентификатор поставщиков, которые поставляют красный или синий цвет.И возможно ли это сделать без использования оператора соединения.

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 голосов
/ 19 декабря 2018

Вы уже выполняете соединение - неявное, разделенное запятыми.

Совет сегодня: всегда используйте современный, явный синтаксис 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')

Также используйте псевдонимы таблиц (s, p) и уточните столбцы, например, s.num.

Бесплатная версия для JOIN:

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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...