Рис. 13. Вкладка для реализации запроса #6
Текст запроса:
CLOSE TABLES
USE "d:\bd\sluzh.dbf"
COUNT TO ppp
DIMENSION RRR(35)
DIMENSION QQQ(35)
DIMENSION zar(35)
k=0
GO top
FOR i=0 TO ppp-1 && найти руководителей и записать их зарплату
IF sluzh.Начальник=" "
k=k+1
RRR(k)=sluzh.Фамилия
zar(k)=sluzh.Зарплата
ENDIF
skip
ENDFOR
FOR i=1 TO k && посчитать кол-во подчиненных
COUNT FOR sluzh.начальник=RRR(i) TO qqq(i)
if(qqq(i)>5) && если >5 подчиненных
SUM sluzh.Зарплата FOR sluzh.начальник=RRR(i) TO zar(i)
ELSE zar(i)=sluzh.Зарплата && если <5 подчиненных
endif
ENDFOR
&& вывод результатов
FOR i=1 TO k
SELECT DISTINCT RRR(i) as "Нач", qqq(i) as "Подч",zar(i)as "Зпл";
FROM assort INNER JOIN points;
ON Assort.имя_товара = Points.имя_товара ;
INNER JOIN sluzh;
ON Points.отдел = Sluzh.отдел;
where sluzh.Фамилия=RRR(i)
endfor
Замечание: так как запрос реализован в цикле, то результатом его работы будет последовательное выведение на экран шести таблиц с результатами.
Рис.14а. Результат работы запроса #6 (часть 1) Рис.14б. Результат работы запроса #6 (часть 2)
Рис.14в. Результат работы запроса #6 (часть 3) Рис.14г. Результат работы запроса #6 (часть 4)
Рис.14д. Результат работы запроса #6 (часть 5) Рис.14е. Результат работы запроса #6 (часть 6)
Запрос #7
Если имеется более 6 служащих, не работающих в заданном отделе (выбор), с зарплатой от 800 до 1000 руб. в месяц (ввод произвольного интервала), то найти их число и общую сумму зарплат. Иначе найти фамилию и зарплату каждого из них.
Рис.15. Вкладка для реализации запроса #7
Текст запроса:
LOSE TABLES
USE "d:\bd\sluzh.dbf"
COUNT FOR sluzh.Отдел!=form1.pageframe1.page7.combo1.value and;
EVALUATE(form1.pageframe1.page7.text1.text) <= sluzh.Зарплата;
AND sluzh.Зарплата<=EVALUATE(form1.pageframe1.page7.text2.text);
TO ttt
form1.pageframe1.page7.label4.caption=STR(ttt)
IF ttt>6
SUM Зарплата TO ww
form1.pageframe1.page7.label4.caption=STR(ttt)
form1.pageframe1.page7.label5.caption=STR(ww)
ELSE
SELECT DISTINCT sluzh.Фамилия,sluzh.Зарплата,points.отдел;
FROM assort INNER JOIN points;
ON Assort.имя_товара = Points.имя_товара ;
INNER JOIN sluzh;
ON Points.отдел = Sluzh.отдел;
where sluzh.Отдел!=form1.pageframe1.page7.combo1.value and;
sluzh.Зарплата between EVALUATE(form1.pageframe1.page7.text1.text) And;
EVALUATE(form1.pageframe1.page7.text2.text)
Endif
Рис.16. Результат работы запроса #7
Запрос #8
Найти список руководителей тех служащих, которые работают в заданном (выбор) отделе второго (выбор) этажа и получают более 500 руб. (ввод произвольного числа) в месяц.
Рис. 17. Вкладка для реализации запроса #8
Текст запроса:
SELECT DISTINCT sluzh.Начальник,sluzh.Фамилия,sluzh.Отдел, points.Этаж,;
sluzh.Зарплата;
FROM assort INNER JOIN points;
ON Assort.имя_товара = Points.имя_товара ;
INNER JOIN sluzh;
ON Points.отдел = Sluzh.отдел;
where sluzh.Отдел=form1.pageframe1.page8.combo1.value and;
points.Этаж=EVALUATE(form1.pageframe1.page8.combo2.value) and;
sluzh.Зарплата>EVALUATE(form1.pageframe1.page8.text3.text) and;
sluzh.Начальник#" "
Рис.18. Результат работы запроса #8
Запрос #9
Найти отделы, где продаются товары вида ДД (выбор из меню любого наименования).
Рис. 19. Вкладка для реализации запроса #9
Текст запроса:
SELECT DISTINCT sluzh.Отдел, points.Имя_товара;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.