Создание базы данных "Игрушки", страница 9

Текст запроса для всех игрушек в целом

SELECT Toysinfo.toyname, Toysinfo.weight;

 FROM ;

     toys!toysinfo;

 WHERE  Toysinfo.weight BETWEEN thisform.Text1.value AND thisform.Text2.value

Пример работы

Введем пределы веса от 200 до 400 и выберем производителя "Essa":

Рис. 9.8. Окно запроса №8.


Результат запроса для выбранного производителя:

Результат запроса для всех игрушек в целом:

Запрос 9: Найти долю игрушек, проданных за определенный период от общего времени продажи.

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

DIMENSION a(1)

DIMENSION b(1)

SELECT COUNT(Sales.salenum);

 FROM ;

     toys!sales;

 WHERE Sales.saledate BETWEEN Forquery09.Text1.value AND Forquery09.Text2.value INTO ARRAY a

 SELECT COUNT(Sales.salenum);

 FROM ;

     toys!sales INTO ARRAY b

if MESSAGEBOX ("Доля игрушек, проданных в заданный период: "+STR(a*100/b)+" %", 0+64+0, "Доля")=1

ELSE

ENDIF


Пример работы

Введем период с 1 февраля по 1 апреля 2007:

Рис. 9.9. Окно запроса №9.

Результат запроса:

Запрос 10: Найти самый популярный вид игрушки (продано наибольшее количество) для заданного возраста и в целом.

Текст запроса для заданного возраста

DIMENSION a(50,2)

SELECT Toysinfo.toyname, COUNT(Sales.saledate);

 FROM ;

     toys!toysinfo ;

    INNER JOIN toys!sales ;

   ON  Toysinfo.toyid = Sales.toyid;

  WHERE Toysinfo.forage = thisform.Text1.Value;

 GROUP BY Toysinfo.toyname INTO ARRAY a

ASORT(a,2,-1,1)

if MESSAGEBOX ("Самая популярная игрушка: "+a(1), 0+64+0, "Популярная")=1

ELSE

ENDIF


Текст запроса для всех игрушек в целом

DIMENSION a(50,2)

SELECT Toysinfo.toyname, COUNT(Sales.saledate);

 FROM ;

     toys!toysinfo ;

    INNER JOIN toys!sales ;

   ON  Toysinfo.toyid = Sales.toyid;

 GROUP BY Toysinfo.toyname INTO ARRAY a

ASORT(a,2,-1,1)

if MESSAGEBOX ("Самая популярная игрушка: "+a(1), 0+64+0, "Популярная")=1

ELSE

ENDIF

Пример работы

Введем возраст равным 7:

Рис. 9.10. Окно запроса №10.

Результат запроса для заданного возраста:

Результат запроса для всех игрушек в целом:


Запрос 11: Найти все игрушки, поступившие от заданного поставщика, чья стоимость больше, чем стоимость заданной игрушки, поступившей из заданной страны.

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

SELECT Toysinfo.toyname;

 FROM ;

     toys!suppliers ;

    INNER JOIN toys!toysinfo ;

   ON  Suppliers.supplierid = Toysinfo.supplierid;

 WHERE  Suppliers.supplier = thisform.Combo1.value;

   AND  Toysinfo.price > (SELECT Toysinfo.price  FROM       toys!suppliers      INNER JOIN toys!toysinfo     ON  Suppliers.supplierid = Toysinfo.supplierid  WHERE  Toysinfo.toyname = thisform.Text1.value    AND  Suppliers.country = thisform.Text2.value)

Пример работы

Выберем производителя "Lego" и введем в качестве заданной игрушки "Космодром" из Польши:

Рис. 9.11. Окно запроса №11.

Результат запроса:


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

Текст запроса для заданного поставщика

DIMENSION a(1)

DIMENSION b(1)

SELECT COUNT(Toysinfo.toyid);

 FROM ;

     toys!suppliers ;

    INNER JOIN toys!toysinfo ;

   ON  Suppliers.supplierid = Toysinfo.supplierid;

 WHERE  Toysinfo.price < thisform.Text1.value;

   AND  Suppliers.supplier = thisform.Combo1.value INTO ARRAY a

 SELECT COUNT(Toysinfo.toyid);

 FROM ;

     toys!suppliers ;

    INNER JOIN toys!toysinfo ;

   ON  Suppliers.supplierid = Toysinfo.supplierid;

 WHERE Suppliers.supplier = thisform.Combo1.value INTO ARRAY b

if MESSAGEBOX ("Доля дешёвых игрушек: "+STR(a*100/b)+" %", 0+64+0, "Доля")=1

ELSE

ENDIF

Текст запроса для всех игрушек в целом

DIMENSION a(1)

DIMENSION b(1)

SELECT COUNT(Toysinfo.toyid);

 FROM ;

      toys!toysinfo ;

 WHERE  Toysinfo.price < thisform.Text1.value INTO ARRAY a

 SELECT COUNT(Toysinfo.toyid);

 FROM ;

      toys!toysinfo ;

 WHERE Toysinfo.price > 0 INTO ARRAY b

if MESSAGEBOX ("Доля дешёвых игрушек: "+STR(a*100/b)+" %", 0+64+0, "Доля")=1