Характерные ошибки при решении задач на написание запросов на выборку (SELECT)База данных «Компьютерная фирма»Упражнение 25 стр. 1 |
|||||
Найдите производителей принтеров, которые производят ПК с наименьшим объемом RAM и с самым быстрым процессором среди всех ПК, имеющих наименьший объем RAM. Вывести: Maker Ключевой здесь является фраза «имеющих наименьший объем RAM». Она не избыточна, как это может показаться на первый взгляд. Не достаточно найти все модели, имеющие максимальную скорость среди ПК с минимальной RAM. Поясним сказанное демонстрацией неправильных решений. Для этой задачи их немало накопилось. Вот первый пример. Решение 1.17.1
1. Ошибка в подзапросе
Здесь выбираются модели ПК с минимальной памятью, и для каждой такой модели определяется ПК с максимальной скоростью. Ошибка состоит в том, что максимальную скорость нужно определять по всем ПК с минимальной памятью, а не по каждой модели. Кроме того, если у производителя будет две модели с минимальной памятью, то он дважды попадет в результирующий набор, так как в запросе отсутствует устранение дубликатов (DISTINCT, например). 2. Ошибка в определении производителей принтеров
Мы уже обсуждали этот вопрос (пункт 1.2). 3. Однако мы еще не выявили главной ошибки решения, которую лучше проанализировать, устранив предыдущие. В следующем решении устранены дубликаты, правильно определены производители принтеров, а также находится глобальный максимум по скорости среди моделей с минимальной памятью. Решение 1.17.2
Вот как определяется здесь максимум по скорости среди моделей с минимальной памятью:
|