double arrow

Представления и подзапросы


Представления также могут использовать подзапросы, включая связанные подзапросы. Рассмотрим сложный пример: Допустим, что компания платит премию продавцу, который имеет покупателя с наибольшим количеством заказов на заданную дату.

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 сравнительно сложных команды, определяющие представления и один простейший запрос, который и выполняется ежедневно, отражая текущее состояние БД.







Сейчас читают про: