Создание базы данных для автопарка (“Машины”, “Механик”, “Ремонт”), страница 4

Поиск доли старых машин производится с помощью формы form_q3 (рис. 13)

Рис. 13. Форма для поиска доли старых машин

Функция Click кнопки “Найти” (form_q3.ButtonFind):

expl = val(form_q3.TextExpl.text)

select * from cars into cursor cur

n_all = reccount()

select * from cars  into cursor cur where exploitation > expl

n_old = reccount()

res = (n_old / n_all)*100

MessageBox("Доля старых машин: " + str(res) + "%")

Результат запроса для срока эксплуатации 10 лет представлен на рис. 14:

Рис. 14. Результат поиска доли старых машин

Поиск машин по ценам

Поиск машин по ценам производится с помощью формы form_q4 (рис. 15)

Рис. 15. Форма для поиска машин по ценам

В двух следующих запросах используются соотнесенные подзапросы.

Поиск самых дорогих машин по типам (form_q4.ButtonFind1.Click):

select c_first.variety as Марка, c_first.cost as Цена, ct_first.car_type as Тип;

from cars c_first inner join car_types ct_first on c_first.car_type_id = ct_first.car_type_id;

where c_first.cost = ;

(select max(cost) from cars c_second where c_first.car_type_id = c_second.car_type_id)

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

Рис. 16. Результаты поиска самых дорогих машин по типам

Поиск самых дешевых машин по типам (form_q4.ButtonFind2.Click):

select c_first.variety as Марка, c_first.cost as Цена, ct_first.car_type as Тип;

from cars c_first inner join car_types ct_first on c_first.car_type_id = ct_first.car_type_id;

where c_first.cost = ;

(select min(cost) from cars c_second where c_first.car_type_id = c_second.car_type_id)

Следующий запрос использует группировку по типам машин.

Поиск средней стоимости машин по типам (form_q4.ButtonFind3.Click):

select car_types.car_type as Тип, avg(cars.cost) as Средняя_стоимость;

            from cars right join car_types on cars.car_type_id = car_types.car_type_id group by car_types.car_type_id

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

Рис. 17. Результаты поиска средней стоимости машин по типам

Поиск машин с ценой свыше 50000, или другой суммы в зависимости от положения переключателей (form_q4.ButtonFind4.Click):

cost_lim = 50000

if form_q4.optiongroupSumm.optionSumm2.value = 1

            cost_lim = val(form_q4.textSumm.text)

endif

select * from cars inner join car_types on cars.car_type_id = car_types.car_type_id;

 where cars.cost > cost_lim

Поиск машин по стране-изготовителю и цене

Поиск машин по ценам и странам производится с помощью формы form_q5 (рис. 18)

Рис. 18. Форма для поиска машин по ценам и странам

Функция Click кнопки “Найти” (form_q5.ButtonFind):

select * from cars inner join car_types on cars.car_type_id = car_types.car_type_id;

where cars.speed > val(form_q5.textSpeed.text) and cars.manuf_place = form_q5.textCountry.text

Поиск машин по сроку эксплуатации

Поиск машин по сроку эксплуатации производится с помощью формы form_q6(рис. 19)

Рис. 19 Форма для поиска машин по сроку эксплуатации

Функция Click кнопки “Найти” (form_q6.ButtonFind):

if form_q6.optiongroup1.optionAllTypes.value = 1

select cnt(car_id) as Количество_машин from cars where exploitation = val(form_q6.textExpl.text)

else

select car_types.car_type as Тип, cnt(cars.car_type_id) as Количество;

            from car_types inner join cars on car_types.car_type_id = cars.car_type_id ;

            where cars.exploitation = val(form_q6.textExpl.text);

            group by cars.car_type_id;

            union;

            select car_types.car_type as Тип, 0 as Количество;

            from car_types inner join cars on car_types.car_type_id = cars.car_type_id ;

where cars.car_type_id not in(select cars.car_type_id from cars where cars.exploitation = val(form_q6.textExpl.text));

            group by cars.car_type_id