Создание базы данных для магазина (“Торговая точка”, “Служащие”, “Ассортимент”), страница 3

Рис. 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.Имя_товара;