Я написал запрос, и он дает правильный набор данных, но не знаю, почему он не принимается? - PullRequest
0 голосов
/ 12 апреля 2020

Ссылка на вопрос в http://www.sql-ex.ru/learn_exercises.php#answer_ref.

Схема

  • Продукт (производитель, модель, тип)
  • P C (код, модель, скорость, ОЗУ, HD, CD, цена)
  • Ноутбук (код, модель, скорость, ОЗУ, HD, экран, цена)

Вопрос состоит в том, чтобы найти производителей, которые производят ПК, но не ноутбуки.

Написанный мной запрос

select maker
from product, pc
where product.model=pc.model
and maker not in
(
  select maker
  from product,laptop
  where product.model=laptop.model
 )

И сообщение, которое я получаю,

Ваш запрос вернул правильный набор данных в первой (доступной) базе данных, но вернул неверный набор данных во второй проверяющей базе данных.

  • Неверное количество записей (больше на 11).

1 Ответ

0 голосов
/ 12 апреля 2020

Вы можете сделать join с not exists:

select distinct p.maker
from product p inner join
     pc
     on pc.model = p.model 
where not exists (select 1 from laptop l where l.model = p.model);

Тем не менее, join создаст дубликаты строк, если в таблице pc есть дубликаты строк. Таким образом, вы можете использовать exists вместо:

select p.maker
from product p
where exists (select 1 from pc where pc.model = p.model) and
      not exists (select 1 from laptop l where l.model = p.model);
...