Программирование в среде VisualFoxPro. Создание базы данных «Зоопарк», страница 6

    LEFT OUTER JOIN data1!kind ON Animals.kind_id = Kind.id ;

 ORDER BY Animals.kind_id

3.5. Запросы к базе данных, требуемые заданием, с соответствующими формами.

Доля редких животных:

Найти долю редких животных (с коэффициентом редкости менее заданного) от общего числа животных.

Рис. 22. Форма для вывода редких животных.

Код метода Click кнопки «Найти»:

SELECT COUNT(*) FROM data1!animals INTO ARRAY tmp

SELECT COUNT(Animals.id)*100/tmp[1] as "Доля";

 FROM  data1!animals LEFT OUTER JOIN data1!kind ON Animals.kind_id = Kind.id;

 WHERE Kind.unique < thisform.unique.value

Самые редкие животные по каждому виду:

Найти самое редкое животное (по каждому виду).

Код запроса:

SELECT t1.id, Detachment.name as "Отряд", t1.name as "Вид", t1.unique as "Редкость";

 FROM  data1!kind as t1 LEFT JOIN data1!detachment ON t1.detachment_id = Detachment.id GROUP BY t1.detachment_id WHERE t1.unique=;

            (SELECT MIN(t2.unique) FROM data1!kind as t2 WHERE t2.detachment_id=t1.detachment_id) ORDER BY t1.unique

Самые маленькие животные по каждому виду:

Найти самых маленьких животных (по каждому виду).

Код запроса:

SELECT t1.id, t1.name as "Имя", Kind.name as "Вид", t1.year as "Год_рождения";

 FROM  data1!animals as t1 LEFT JOIN data1!kind ON t1.kind_id = Kind.id GROUP BY t1.kind_id WHERE t1.year=;

            (SELECT MIN(t2.year) FROM data1!animals as t2 WHERE t2.kind_id=t1.kind_id) ORDER BY t1.year

Самое маленькое животное:

Найти самое маленькое животное.

Код запроса:

SELECT t1.id, t1.name as "Имя", Kind.name as "Вид", t1.year as "Год_рождения";

 FROM  data1!animals as t1 LEFT JOIN data1!kind ON t1.kind_id = Kind.id WHERE t1.year=(SELECT MIN(animals.year) FROM data1!animals)

Животные с ценой, выше заданной:

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

Рис. 23. Форма для вывода редких животныхс ценой, выше заданной.

Код метода Click кнопки «Найти»:

SELECT t.id, t.name as "Имя", kind.name as "Вид", t.cost as "Цена";

 FROM  data1!animals as t LEFT OUTER JOIN data1!kind ON t.kind_id = Kind.id;

 WHERE t.cost > thisform.cost.value ORDER BY t.cost

Животные из заданной страны:

Найти всех животных, поступивших из заданной страны (выбор страны).

Рис. 24. Форма для вывода редких животныхиз заданной страны.

Код метода Click кнопки «Найти»:

SELECT t.id, t.name as "Имя", kind.name as "Вид", Country.name as "Страна";

 FROM  data1!animals as t LEFT OUTER JOIN data1!kind ON t.kind_id = Kind.id;

 LEFT OUTER JOIN data1!country ON t.country_id = Country.id;

 WHERE t.country_id=val(thisform.country.value) ORDER BY t.name

Животные со стоимостью выше, чем средняя стоимость по заданной стране:

Найти всех животных, чья стоимость больше, чем средняя стоимость животных из заданной страны (выбор страны).

Рис. 25. Форма для вывода редких животныхсо стоимостью выше, чем средняя стоимость по заданной стране.

Код метода Click кнопки «Найти»:

SELECT t.id, t.name as "Имя", kind.name as "Вид", Country.name as "Страна", t.cost as "Стоимость";

 FROM  data1!animals as t LEFT OUTER JOIN data1!kind ON t.kind_id = Kind.id;

 LEFT OUTER JOIN data1!country ON t.country_id = Country.id;

 WHERE t.cost>;

            (SELECT AVG(t2.cost);

             FROM  data1!animals as t2 LEFT OUTER JOIN data1!country ON t2.country_id = Country.id;

             WHERE t2.country_id=val(thisform.country.value));

 ORDER BY t.cost

Самое дорогое и самое дешёвое животные:

Найти самое дорогое животное, самое дешёвое.

Код запроса:

SELECT t1.id, t1.name as "Имя", Kind.name as "Вид", t1.cost as "Стоимость";

 FROM  data1!animals as t1 LEFT JOIN data1!kind ON t1.kind_id = Kind.id WHERE t1.cost=(SELECT MAX(animals.cost) FROM data1!animals);

 UNION;

SELECT t1.id, t1.name as "Имя", Kind.name as "Вид", t1.cost as "Стоимость";