Создание базы данных «Пресса», страница 3

LOCAL cntpost(kol,2)

SELECT typ.type_, avg(press.price);

FROM pressa!press inner join pressa!typ;

ON press.id_type=typ.id_type;

group by typ.id_type;

INTO ARRAY cntpost

LOCAL maxi

maxi=cntpost(2)

FOR gnCount=1 TO kol STEP 1

            IF (cntpost(gnCount*2)>maxi)

            maxi=cntpost(gnCount*2)

            ENDIF

ENDFOR

LOCAL sentence

sentence="Самый дорогой вид продукции: "

FOR gnCount = 1 TO kol STEP 1

            IF (cntpost(gnCount*2)=maxi)

            sentence=sentence+cntpost(gnCount*2-1)

            ENDIF

ENDFOR

MessageBox(alltrim(sentence))

Обработка кнопки «Самое дешевое издание»:

LOCAL kol(1)

SELECT count(typ.type_);

FROM pressa!typ;

INTO ARRAY kol

LOCAL cntpost(kol,2)

SELECT typ.type_, avg(press.price);

FROM pressa!press inner join pressa!typ;

ON press.id_type=typ.id_type;

group by typ.id_type;

INTO ARRAY cntpost

LOCAL minn

minn=cntpost(2)

FOR gnCount=1 TO kol STEP 1

            IF (cntpost(gnCount*2)<minn)

            minn=cntpost(gnCount*2)

            ENDIF

ENDFOR

LOCAL sentence

sentence="Самый дешевый вид продукции: "

FOR gnCount = 1 TO kol STEP 1

            IF (cntpost(gnCount*2)=minn)

            sentence=sentence+cntpost(gnCount*2-1)

            ENDIF

ENDFOR

MessageBox(alltrim(sentence))

Обработка кнопки «Средняя стоимость в целом»:

SELECT typ.type_, AVG(press.price);

FROM pressa!press INNER JOIN pressa!typ;

ON press.id_type==typ.id_type;

group by typ.id_type

Обработка кнопки «Средняя стоимость с учетом вида прессы»:

SELECT typ.type_ as Type_of_press, AVG(press.price) as Average_price;

FROM pressa!press inner join pressa!typ;

ON press.id_type=typ.id_type;

WHERE press.id_type=(SELECT typ.id_type FROM pressa!typ WHERE typ.Type_=thisform.combo1.value)

Результаты работы запроса:

    

    

Рис.13.Результаты работы  формы “form_02.scx”


Form_03.scx

Найти прессу с ценой выше 5р. (и любая другая сумма, т.е. предусмотреть ввод цены с клавиатуры) для каждого вида издания и в целом

Рис.14. Форма “form_03.scx”

Обработка кнопки «Найти в целом»:

select press.name_press, press.price;

from pressa!press;

where press.price > ThisForm.Text1.Value;

ORDER BY press.price

Обработка кнопки «Найти по виду»:

SELECT press.name_press, press.price;

FROM pressa!press INNER JOIN pressa!typ;

ON press.id_type==typ.id_type;

WHERE press.price > Thisform.Text1.value;

AND press.id_type=(select typ.id_type FROM pressa!typ WHERE typ.type_=thisform.combo1.value)

Результаты работы запроса:

   

Рис.15.Результаты работы  формы “form_03.scx”


Form_04.scx

Найти все издания, чей тираж попадает в заданные пределы (ввод интервала)

Рис.16. Форма “form_04.scx”

Обработка кнопки «Найти»:

select press.name_press, press.circulation;

FROM pressa!press;

where press.circulation between ThisForm.Text1.Value and ThisForm.Text2.Value;

ORDER BY press.circulation

Результаты работы запроса:

Рис.17.Результаты работы  формы “form_04.scx”


Form_05.scx

Для заданного издательства (выбор) найти все виды газетной продукции

Рис.18. Форма “form_05.scx”

Обработка кнопки «Найти»:

SELECT Press.name_press, Publisher.publisher_, Typ.type_ ;

FROM  pressa!publisher FULL JOIN pressa!press;

FULL JOIN pressa!typ ;

ON  Typ.id_type = Press.id_type ;

ON  Publisher.id_publisher = Press.id_publisher;

where publisher.id_publisher=(SELECT publisher.id_publisher FROM pressa!publisher WHERE publisher.publisher_=ThisForm.Combo1.Value)

Результат работы запроса:

Рис.19.Результаты работы  формы “form_05.scx”