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

MNA(x)=assort.Имя_товара

MTA(x)=assort.Поставщик

x=x+1

SKIP

ENDDO

USE "d:\bd\points.dbf"

DIMENSION OTD(6)

DIMENSION OT(27)

GO top

x=1

nine=0

i=1

&&запись без повторов (отделы)

DO while x<=27

      nine=0

      FOR i=1 TO x-1

            IF points.Отдел=OT(i)

                  nine=1

            ENDIF

      ENDFOR

      IF nine!=1

      OT(x)=points.Отдел

      ELSE

      OT(x)="111"

      ENDIF

      x=x+1

      SKIP

ENDDO

j=0

y=0

DO WHILE j<=26

j=j+1

IF OT(j)!="111"

   y=y+1

   OTD(y)=OT(j)

ENDIF

ENDDO

&& Этажи

DIMENSION PP(3)

PP(1)=1

PP(2)=2

PP(3)=3

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

Запрос #1

Для каждого поставляемого товара выдать ее характеристику, фирму поставщика (если их несколько - то всех, различия в цене или другие различия), ФИО служащих, которые торгуют этим товаром, отделы и т.д.

Рис. 4. Вкладка для реализации запроса #1

Текст запроса:

SELECT assort.Имя_товара, assort.Поставщик, assort.Цена,;

sluzh.Фамилия, sluzh.Имя, sluzh.Отчество, sluzh.Отдел,;

points.Об_продаж;

FROM assort INNER JOIN points;

   ON  Assort.имя_товара = Points.имя_товара ;

                  INNER JOIN sluzh;

   ON  Points.отдел = Sluzh.отдел order BY 1

Рис.5. Результат работы запроса #1

Запрос #2

Найти число служащих в каждом отделе.

Рис. 6. Вкладка для реализации запроса #2

Текст запроса:

CLOSE TABLES

USE "d:\bd\sluzh.dbf"

COUNT FOR sluzh.отдел="Зоотовары" TO vvv

form1.pageframe1.page2.label7.caption=STR(vvv)

COUNT FOR sluzh.отдел="Спортивный" TO vvv

form1.pageframe1.page2.label8.caption=STR(vvv)

COUNT FOR sluzh.отдел="Канцтовары" TO vvv

form1.pageframe1.page2.label9.caption=STR(vvv)

COUNT FOR sluzh.отдел="Обувной" TO vvv

form1.pageframe1.page2.label10.caption=STR(vvv)

COUNT FOR sluzh.отдел="Одежда" TO vvv

form1.pageframe1.page2.label11.caption=STR(vvv)

COUNT FOR sluzh.отдел="Книжный" TO vvv

form1.pageframe1.page2.label13.caption=STR(vvv)

Рис.6. Результат работы запроса #2

Запрос #3

Найти этажи, на которых продаются товары фирмы АА (выбор из меню любого наименования) или товары фирмы ББ (выбор из меню любого наименования).

Рис. 7. Вкладка для реализации запроса #3

Текст запроса:

SELECT DISTINCT assort.Поставщик, points.Этаж;

FROM assort INNER JOIN points;

   ON  Assort.имя_товара = Points.имя_товара ;

                  INNER JOIN sluzh;

   ON  Points.отдел = Sluzh.отдел;

Where assort.Поставщик=form1.pageframe1.page3.combo1.value;

OR assort.Поставщик=form1.pageframe1.page3.combo2.value;

ORDER BY assort.Поставщик

Рис.8. Результат работы запроса #3

Запрос #4

Найти суммарный объем товаров, проданных отделами второго этажа (выбор), стоимость которых превосходит 25000 руб. (ввод произвольного числа с клавиатуры).

Рис. 9. Вкладка для реализации запроса #4

Текст запроса:

SELECT SUM(points.Об_продаж);

FROM assort INNER JOIN points;

   ON  Assort.имя_товара = Points.имя_товара ;

                  INNER JOIN sluzh;

   ON  Points.отдел = Sluzh.отдел;

where points.Этаж=Evaluate(form1.pageframe1.page4.combo1.value);

AND assort.цена>Evaluate(form1.pageframe1.page4.text2.text)

Рис.10. Результат работы запроса #4

Запрос #5

Найти фамилии служащих, работающих в отделах, торгующих товаром вида ДД (выбор наименования товара).

Рис. 11. Вкладка для реализации запроса #5

Текст запроса:

SELECT DISTINCT sluzh.Фамилия, points.Отдел, assort.Имя_товара;

FROM assort INNER JOIN points;

   ON  Assort.имя_товара = Points.имя_товара ;

                  INNER JOIN sluzh;

   ON  Points.отдел = Sluzh.отдел;

where assort.Имя_товара=form1.pageframe1.page5.combo1.value

Рис.12. Результат работы запроса #5

Запрос #6

Для руководителей, имеющих более 5 подчиненных, найти сумму зарплат их подчиненных, для остальных руководителей - найти их собственную зарплату.