Для решения этой задачи используется обычно два подхода: соединение с последующим выбором нужной строки и проверка на попадание производителя в два списка. Следующее неправильное решение, реализует первый подход:
Это еще один вариант на тему «чего-то одного». Действительно, модель уникальна, т. е. она представляет собой либо ПК, либо портативный компьютер. В результате внешних соединений получаются строки типа:
maker model (PC)NULL
или
maker NULL model (laptop)
Однако здесь не может быть строк:
maker model (PC) model (laptop)
поскольку соединение выполняется по номеру модели.
В результате в списке имеются производители, которые выпускают только один вид продукции с требуемыми характеристиками. Однако подправить это решение просто, добавив группировку по производителю и посчитав модели. Предлагаем вам сделать это самостоятельно.
Решение 4.11.2
Для демонстрации второго подхода рассмотрим следующий вариант:
который можно прочитать следующим образом: найти производителя, который выпускает ПК со скоростью не менее 750 МГц или портативный компьютер со скоростью не менее 750 МГц; при этом данный производитель должен производить ПК и портативные компьютеры. Несомненный прогресс этого решения по сравнению с решением 1.15.1 состоит в том, что выводятся производители, как ПК, так и портативных компьютеров. Однако это решение допускает вариант, когда производитель выпускает только ПК со скоростью более 750 МГц, в то время как все его портативные компьютеры имеют скорость менее 750 МГц, и наоборот.