Книги и статьи по SQL Rambler's Top100 Switch language to: English 28 сентября 2020 г. 16:06:22


www.sql-ex.ru
Skip Navigation Links  

 

Print  Версия для печати

На главную страницу

Характерные ошибки при решении упражнений. Задача 8

Моисеенко С.И.

Найдите производителя, продающего ПК, но не ПК-блокноты.

Вот одно из неправильных решений, которое ранее проходило:

SELECT DISTINCT p.maker
  FROM Product p INNER JOIN pc
   ON p.model = pc.model
   WHERE p.maker NOT IN
      (SELECT ip.maker FROM Laptop il INNER JOIN Product ip ON il.model = ip.model)

Здесь, вероятно, сказывается недостаток в описании предметной области, которое сознательно писалось кратким, чтобы оно постоянно было перед глазами на странице с упражнениями и не занимало при этом много места.

Представленное решение находит производителя, модели которого есть в таблице PC, и нет - в таблице Laptop. На самом деле для решения этой задачи достаточно одной лишь таблицы Product, в которой имеется поле type, описывающее тип продукции (PC, Laptop, Printer).

Таблица Product связана отношением один-ко-многим с другими таблицами по типам продукции.

Последнее означает, что в таблице Product могут быть модели, отсутствующие в таблице соответствующего типа продукции. Таким образом, если некий производитель имеет модели ПК-блокнотов, но их нет (в текущий момент) в таблице Laptop, то представленный запрос будет выводить этого производителя (если в таблице PC есть его модели). Хотя, на мой взгляд, не должен.

В настоящее время данные в проверочную базу добавлены и этот запрос уже не проходит.

В заключение дам следующую трактовку данной предметной области. Таблица Product содержит информацию о поставщиках моделей, а остальные таблицы - модели, которые имеются в наличии, например, на складе некой фирмы.

Перейти к решению задачи #8

На главную страницу

Print  Версия для печати


Использование любых материалов данного сайта возможно только
при условии обязательного размещения прямой ссылки на сайт
http://www.sqlbooks.ru
на каждой странице, где размещены используемые материалы.

 Начало   Статьи    Книги 
Рейтинг@Mail.ru Rambler's Top100 Alt Упражнения по SQL: обучение, тестирование, сертификация по языку SQL Copyright c 2002-2006. All rights reserved.