Книги и статьи по SQL Rambler's Top100 Switch language to: English 26 апреля 2024 г. 15:19:18


www.sql-ex.ru
Skip Navigation Links  

 

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

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

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

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

Найдите средний размер диска ПК каждого из тех производителей, которые выпускают и принтеры. Вывести: maker, средний размер HD.

Ошибка, которую здесь допускают, связана с недопониманием специфики предметной области. Я уже где-то об этом писал, но поскольку периодически получаю письма с просьбой объяснить ошибку в решении задачи, еще раз изложу трактовку базы данных "Компьютеры".

В таблице Product хранится информация обо всех известных производителях компьютерной техники. По крайней мере, тех, с кем взаимодействует наша вымышленная фирма. Остальные таблицы - PC, Laptop и Printer - содержат имеющиеся в наличии модели соответственно ПК, ПК-блокнотов и принтеров (например, в магазине). Здесь одна и та же модель может повторяться несколько раз, причем даже с идентичными характеристиками, т.к. все эти таблицы содержат синтетический первичный ключ - code. Связи "один-ко-многим" по модели допускают отсутствие той или иной модели в наличии, хотя она может присутствовать в таблице Product, т.к. имеется производитель, который ее выпускает.

Итак, когда речь идет, например, о производителях принтеров как в этой задаче, то это те юридические лица в таблице Product, у которых в поле type находится значение 'printer'. Проще говоря,

SELECT DISTINCT maker FROM Product WHERE type = 'printer'

Ошибка же состоит в том, что производителя принтеров определяют таким образом:

SELECT DISTINCT (Product.maker) FROM Product INNER JOIN Printer ON
    Product.model = Printer.model

Таким образом, ограничивается число возможных производителей принтеров только теми, чьи модели (принтеров) имеются в наличии.

Аналогичная ошибка допускается и в задаче 28, которая звучит так:

Найдите средний размер диска ПК (одно значение для всех) тех производителей, которые выпускают и принтеры. Вывести: средний размер HD

Приведенные здесь примеры можно выполнить непосредственно на сайте, установив флажок "Без проверки" на странице с упражнениями на SELECT.

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

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

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


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

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