На главную страницу
Характерные ошибки при решении упражнений.
Задача 14
Моисеенко С.И.
Для таблицы Product получить результирующий набор в виде таблицы со столбцами maker, pc, laptop и printer,
в которой для каждого производителя требуется указать, производит он (yes) или нет (no) соответствующий тип
продукции. В первом случае (yes) указать в скобках без пробела количество имеющихся в наличии
(т.е. находящихся в таблицах PC, Laptop и Printer) различных по номерам моделей соответствующего типа.
Если производитель выпускает модели некоторого типа, но ни одной из них нет в наличии,
то, согласно формулировке, результат должен быть
yes(0)
а не
no
Многие находят ошибку в тестовом решении. Претензии сводятся к следующему запросу:
SELECT COUNT(*)
FROM Product
WHERE Maker = 'E' AND type='PC'
который дает 3 модели ПК для производителя Е, в то время как «правильный ответ»
дает только одну модель компьютера для этого производителя. Вернемся к формулировке,
в которой сказано:
«…указать в скобках без пробела количество имеющихся в наличии (т.е. находящихся
в таблицах PC, Laptop и Printer) различных по номерам моделей соответствующего типа…»
Это в нашем случае означает, в скобках требуется указать число различных моделей
ПК производителя Е в таблице PC. На языке SQL это означает:
SELECT COUNT(DISTINCT pc.model)
FROM Product pr
JOIN PC ON pr.model=pc.model
WHERE Maker = 'E'
Перейти к
решению задачи #14
На главную страницу