ПРЕДСТАВЛЕНИЯ И ПОДЗАПРОСЫ
Представления могут также использовать и подзапросы, включая соотнесенные подзапросы.
Предположим ваша компания
предусматривает премию для тех продавцов которые имеют заказчика с самым высоким порядком для
любой указанной
даты. Вы можете проследить эту информацию с помощью представления:
CREATE VIEW Elitesalesforce AS SELECT b.odate,
a.snum, a.sname, FROM Salespeople a, Orders b
WHERE a.snum = b.snum AND b.amt = (SELECT MAX (amt)
FROM Orders c
WHERE c.odate = b.odate);
Если, с другой стороны, премия будет назначаться только продавцу который имел самый высокий
порядок за последние десять лет, вам необходимо будет проследить их в другом представлении
основанном на первом:
CREATE VIEW Bonus AS SELECT DISTINCT snum, sname FROM Elitesalesforce a WHERE 10 < = (SELECT COUNT (*) FROM
Elitesalestorce b WHERE a.snum = b.snum);
Извлечение из этой таблицы продавца, который будет получать премию -
выпоняется простым вопросом:
SELECT * FROM Bonus;
Теперь мы видим истинную мощность SQL. Извлечение той же
полученной информации программами RPG или COBOL будет более длительной процедурой. В SQL,
это - только вопрос
из двух комплексных команд, сохраненных, как представление совместно с простым запросом. При
самостоятельном
запросе - мы должны заботится об этом каждый день, потому что ин- формация которую извлекает
запрос, непрерывно
меняется чтобы отражать текущее состояние базы данных.