Создание базы данных “Коммивояжер”, страница 6

Код:

select goods.наименование, producer.производитель, country.страна,;

supplier.поставщик, goods.вес, goods.стоимость, goods.дата_выпуска,;

goods.дата_продажи;

 FROM   dataagent!agent, dataagent!goods, dataagent!country,;

 dataagent!producer, dataagent!supplier;

    where   agent.id=goods.id_агента and  producer.id = goods.производитель;

and country.id = goods.страна and supplier.id = goods.поставщик and;

supplier.поставщик = thisform.pageframe1.page16.combo1.value and;

goods.стоимость > (;

select goods.стоимость;

FROM   dataagent!agent, dataagent!goods, dataagent!country,;

 dataagent!producer, dataagent!supplier;

    where   agent.id=goods.id_агента and  producer.id = goods.производитель;

and country.id = goods.страна and supplier.id = goods.поставщик and;

goods.наименование = thisform.pageframe1.page16.combo2.value and;

country.страна = thisform.pageframe1.page16.combo3.value )

Рис. 36. Чтобы продемонстрировать работоспособность данного запроса, учтём, что скисшее молоко, наверняка дёшево стоит…

Рис. 37. Так и оказалось. На складе №1 есть целых о три товара, чья стоимость больше стоимости скисшего молока

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

Поскольку в данном запросе необходимо реализовать два запроса (для заданного поставщика и в целом). Приведу два блока SQL – запросов.

Код:

А) для заданного поставщика:

select count(goods.стоимость) as stoim;

from dataagent!goods, dataagent!supplier;

where goods.стоимость <(thisform.pageframe1.page17.Text1.value);

and supplier.id = goods.поставщик and supplier.поставщик = thisform.pageframe1.page17.Combo1.value;

into cursor temp

select count(goods.стоимость) as stoim;

from goods;

into cursor _all

thisform.pageframe1.page17.Text2.value = (temp.stoim/_all.stoim)*100

Б) в целом:

select count(goods.стоимость) as stoim;

from goods;

where goods.стоимость < (thisform.pageframe1.page17.Text1.value);

into cursor temp

select count(goods.стоимость) as stoim;

from goods;

into cursor _all

thisform.pageframe1.page17.Text2.value = (temp.stoim/_all.stoim)*100

Рис. 38. Доля дешёвых товаров в целом.

Рис. 39. Доля дешёвых товаров от заданного поставшика.

18.  Найти максимальную, наименьшую, среднюю стоимость товаров, проданных за определенный промежуток времени (ввод промежутка)

Запросы минимальной, максимальной и средней цены товара для заданного промежутка времени практически ничем меж собой не отличаются (разве что, функциями взятия min, max, avg значений от заданного столбца), потому, приведу код лишь функции нахождения среднего значения:

Код:

SELECT avg(goods.стоимость);

FROM dataagent!goods;

WHERE goods.дата_продажи between thisform.pageframe1.page18.Text1.value;

                           AND thisform.pageframe1.page18.Text2.value

Рис. 40. Три запроса в одном.

19.  Найти все товары, чья стоимость выше, чем средняя стоимость товара заданного производителя

Код:

select goods.наименование, producer.производитель, country.страна,;

supplier.поставщик, goods.вес, goods.стоимость, goods.дата_выпуска,;

goods.дата_продажи, goods.кол_во_продаж;

FROM  dataagent!goods, dataagent!country,;

 dataagent!producer, dataagent!supplier;

    where producer.id = goods.производитель;

and country.id = goods.страна and supplier.id = goods.поставщик and;

goods.стоимость > (;

select   avg(стоимость) as "средняя" ;

from dataagent!goods, dataagent!producer;

where producer.id = goods.производитель and producer.производитель =;

thisform.pageframe1.page19.combo1.value)

Рис. 41 Выбор производителя, относительно товаров которого будет искать средние по стоимости товары.

Рис. 42 Результаты выполнения запроса


5. Вывод

В ходе выполнения расчетно-графической работы, были гораздо более глубоко усвоены навыки работы с реляционными БД (на примере FoxPro). Работа с формами и управление ими доведены до автоматического «щёлканья» по кнопкам и панелям FoxPro.


6. Список используемой литературы

1. Электронный учебник по FoxPro, Трошина Г.В.

2. MSDN, April, 2001


Приложение.