Программирование >>  Построение запросов sql 

1 ... 58 59 60 [ 61 ] 62 63 64 ... 101


из таблицы Request будут выбраны неисправности газового оборудования, представлен на рис. 4.6.

все ремонтные заявки с кодом равным 1. Результат запроса

REQUESTCD

ACCOUNTCD

EXECUTORCD

FAILURECD

INCOMINGDATE

EXECUTIONDATE

EXECUTED

005488

17.12.2001

20.12.2001

115705

07.08.2001

12.08.2001

080270

31.12.2001

<null>

136169

06.11.2001

08.11.2001

Рис. 4.6. Результат выполнения запроса к представлению FailureReq

Вертикальное представление представляет собой вертикальное подмножество строк одиночной таблицы и предназначено для ограничения доступа к столбцам таблицы. Запрос в таком представлении выбирает из таблицы требуемые столбцы, а ограничение на выбор строк отсутствует.

Например, если необходимо создать представление AbonentPhone, которое должно содержать ФИО абонента и его телефон, следует выполнить следующий запрос:

CREATE VIEW Abonent Phone (Abon Fio, Abon Phone) AS SELECT Fio, Phone FROM Abonent;.

В этом примере AbonFio и AbonPhone - имена столбцов представления. Если не указывать обозначение имен в скобках после имени представления, то столбцы представления получат соответственно имена Fio и Phone.

Следующий запрос:

SELECT * FROM Abonent Phone;

даст результат, представленный на рис. 4.7.

ABON FIO

ABON PHONE

АКСЕНОВ С.А.

556893

МИЩЕНКО Е.В.

769975

КОНЮХОВ В.С.

761699

ТУЛУПОВА М.И.

214833

СВИРИНА З.А.

350003

СТАРОДУБЦЕВ Е.В.

683014

ШМАКОВ С.В.

982222

МАРКОВА В.П.

683301

ДЕНИСОВА Е.К.

680305

ЛУКАШИНА Р.М.

254417

ШУБИНА Т.П.

257842

ТИМОШКИНА Н.Г.

321002

Рис. 4.7. Результат выполнения запроса к представлению AbonentPhone

Смешанное представление представляет собой подмножество строк и столбцов одиночной таблицы. Оно является представлением, разделяющим исходную таблицу как в горизонтальном, так и в вертикальном направлениях.



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

CREATE VIEW Nachisl Service AS SELECT AccountCD, GazServiceCD, NachislSum FROM NachislSumma WHERE GazServiceCD = 2;.

Сгруппированное представление основано на запросе, содержащем предложение GROUP BY и, как следствие, использующем агрегатные функции. Оно выполняет ту же функцию, что и запросы с группировкой определенных столбцов. В них родственные строки данных объединяются в группы, и для каждой группы в таблице результатов запроса создается одна строка, содержащая итоговые данные по этой группе. С помощью сгруппированного представления запрос с группировкой превращается в виртуальную таблицу, к которой в дальнейшем можно обращаться.

В отличие от горизонтальных и вертикальных представлений, каждой строке сгруппированного представления не соответствует какая-то одна строка исходной таблицы. Сгруппированное представление не является просто фильтром исходной таблицы. Оно, в силу использования агрегатных функций, отображает исходную таблицу в виде суммарной информации и требует от СУБД значительного объема вычислений.

Например, если необходимо создать представление Abonent All Pay с полями AccountCD и All Pay, показывающее общую сумму оплат для каждого абонента, то следует выполнить следующий запрос:

CREATE VIEW Abonent All Pay (AccountCD, All Pay)

AS SELECT AccountCD, Sum (PaySum)

FROM PaySumma GROUP BY AccountCD;.

Результат выполнения следующего запроса:

SELECT * FROM Abonent All Pay;

представлен на рис. 4.8.

ACCOUNTCD

ALL PAY

005488

222,83

015527

84,96

080047

256,88

080270

221,30

080613

114,66

115705

747,95

126112

40,60

136159

16,60

136160

112,60

136169

160,66

443069

195,10

443690

39,47



Соединенное представление - это подмножество строк и столбцов из нескольких таблиц. Задавая в определении представления, например, двух- или многотабличный запрос, можно создать виртуальную таблицу, данные в которую считываются соответственно из двух или трех различных таблиц. После создания такого представления к нему можно обращаться с помощью однотабличного запроса.

Например, необходимо создать представление с именем AbonentExecutor, в котором будут содержаться ФИО абонентов и назначенных по их ремонтным заявкам исполнителей. Для решения данной задачи подойдет следующий запрос:

CREATE VIEW Abonent Executor (Abonent Name, Executor Name) AS SELECT A. Fio, E. Fio

FROM Abonent A, Executor E, Request R WHERE R. AccountCD = A.AccountCD AND R.ExecutorCD = E. ExecutorCD;.

Результат выполнения следующего запроса:

SELECT * FROM Abonent Executor;

представлен на рис. 4.9.

ABONENT NAME

EXECUTOR NAME

АКСЕНОВ С.А.

СТАРОДУБЦЕВ Е.М.

КОНЮХОВ В.С.

СТАРОДУБЦЕВ Е.М.

ЛУКАШИНА Р.М.

СТАРОДУБЦЕВ Е.М.

ШМАКОВ С.В.

СТАРОДУБЦЕВ Е.М.

МИЩЕНКО Е.В.

СТАРОДУБЦЕВ Е.М.

СТАРОДУБЦЕВ Е.В.

СТАРОДУБЦЕВ Е.М.

ШМАКОВ С.В.

СТАРОДУБЦЕВ Е.М.

ДЕНИСОВА Е.К.

БУЛГАКОВ Т.И.

МИЩЕНКО Е.В.

БУЛГАКОВ Т.И.

МИЩЕНКО Е.В.

БУЛГАКОВ Т.И.

МИЩЕНКО Е.В.

ШУБИН В.Г.

ШУБИНА Т.П.

ШУБИН В.Г.

СВИРИНА З.А.

ШУБИН В.Г.

ШУБИНА Т.П.

ШУБИН В.Г.

ТИМОШКИНА Н.Г.

ШЛЮКОВ М.К.

АКСЕНОВ С.А.

ШЛЮКОВ М.К.

МИЩЕНКО Е.В.

ШЛЮКОВ М.К.

ТИМОШКИНА Н.Г.

ШЛЮКОВ М.К.

СТАРОДУБЦЕВ Е.В.

ШКОЛЬНИКОВ С.М.

АКСЕНОВ С.А.

ШКОЛЬНИКОВ С.М.

ДЕНИСОВА Е.К.

ШКОЛЬНИКОВ С.М.



1 ... 58 59 60 [ 61 ] 62 63 64 ... 101

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика