Представления и подзапросы.
Представления также могут использовать подзапросы, включая связанные подзапросы. Рассмотрим сложный пример: Допустим, что компания платит премию продавцу, который имеет покупателя с наибольшим количеством заказов на заданную дату.
CREATE VIEW EliteS
AS SELECT b.odate, a,snum, a.sname
FROM Sales people a, Orders b
WHERE a.snum = b.snum
AND b.amt = (SELECT MAX (amt)
FROM Orders c
WHERE c.odate = b.odate);
Теперь предположим, что вознаграждение должен получить тот продавец, который имел наибольшее количество заказов, по крайней мере, 10 раз, то информацию можно получить, основываясь на первом представлении:
CREATE VIEW Bonus
AS SELECT DISTINCT snum, sname
FROM EliteS a считает число строк
WHERE 10< = (SELECT COUNT (*)
FROM EliteS B
WHERE a.snum = b.snum);
Теперь, чтобы извлечь продавца, которому полагается вознаграждение:
SELECT *
FROM Bonus;
Для того, чтобы извлечь такую информацию с использованием COBOL, потребовалась бы довольно большая программа. В SQL мы использовали 2 сравнительно сложных команды, определяющие представления и один простейший запрос, который и выполняется ежедневно, отражая текущее состояние БД.
Дата добавления: 2014-11-29; просмотров: 827;