Код:
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 Результаты выполнения запроса
В ходе выполнения расчетно-графической работы, были гораздо более глубоко усвоены навыки работы с реляционными БД (на примере FoxPro). Работа с формами и управление ими доведены до автоматического «щёлканья» по кнопкам и панелям FoxPro.
1. Электронный учебник по FoxPro, Трошина Г.В.
2. MSDN, April, 2001
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.