Упражнение 17 (подсказки и решения) |
||
Итак, избавляемся от декартового произведения. Для этого убираем таблицу PC из предложения FROM, а таблицы Product и Laptop соединяем по столбцу model:
Условие p.type = 'laptop' уже излишне, так как внутреннее соединение будет содержать модели только данного типа. Оказывается, что можно избавиться и от соединения, поскольку таблица Product используется только для того, чтобы в результирующем наборе вывести тип продукта. Но тип продукта заранее известен — это портативный компьютер, поэтому мы может просто применить выражение (константу) для указания типа, убрав соединение:
Заметим, что данное решение будет справедливо только в том случае, если в таблице Laptop будут находиться изделия с типом Laptop. Для нашей базы данных это условие выполняется, т. к. имеется всего три типа продукции и соответственно три таблицы. Поэтому нарушение данного условия может быть связано только с изменением структуры, что, впрочем, тоже следует иметь в виду при разработке приложений со встроенными SQL-запросами. Перейти к обсуждению упражнения 17 Решить упражнение на SQL-EX.RU |