На главную страницу
Характерные ошибки при решении упражнений.
Задача 18
Моисеенко С.И.
Найдите производителей самых дешевых цветных принтеров. Вывести: maker, price.
За последние дни получил несколько вопросов по этой задаче и решил написать FAQ
.
Например, спрашивают, почему следующее решение не принимается системой проверки?
select product.maker, printer.price
from product, printer
where product.model = printer.model and
printer.price =
(select min( price)
from printer
where color = 'y')
Я отвечаю, что здесь нет проверки условия, что принтер является цветным. Однако
не всем этого оказывается достаточно, поскольку получаю второй вопрос: а как же
условие
printer.price =
(select min( price)
from printer where color = 'y')
?
Последний
предикат сравнивает цену КАЖДОГО принтера с минимальной ценой на цветные. Поэтому,
если окажется, что НЕ цветной принтер (например, матричный) будет иметь цену, совпадающую
с минимальной ценой на цветные принтеры, то он попадет в результаты выполнения запроса.
И не забудьте исключить дубликаты.
Приведенные здесь примеры можно выполнить непосредственно на сайте, установив
флажок "Без проверки" на странице с упражнениями
на SELECT.
Перейти к
решению задачи #18
На главную страницу