- •Лабораторная работа №7
- •7 Типы запросов данных в sql
- •7.1 Дополнительный материал
- •7.1.1 Команды языка запросов sql
- •7.1.2 Создание таблицы базы данных
- •7.1.3 Дополнение записей в таблицы базы
- •Insert into Poshk_k nomp, famp, gord, stat
- •Values (“п6”, “быков”, “москва”, 10)
- •7.1.4 Формирование запросов из тбд командным способом
- •Команда delete (sql-оператор)
- •7.2 Оператор select, формируемый интерактивным способом
- •Файлы запросов на языке sql и результаты их выполнения. Запрос 1: запрос по точному совпадению значения одного поля
- •Запрос 2: запрос по точному несовпадению значения одного поля
- •Запрос 3: запрос по неточному совпадению значения одного поля
- •Into cursor Nomrd
- •Into cursor difficult
- •Многотабличные запросы
- •Сложные запросы.
- •Вложенные запросы.
- •7.6 Арифметические операции в опции where
Запрос 2: запрос по точному несовпадению значения одного поля
В таблице Poshk дать фамилии и города поставщиков, не проживающих в городе Киев.
См. запрос 1. Все так же + поставить флажок в зоне Not: Poshk.gord not = “Киев”.
Query2.qpr:
SELECT Poshk.nomp, Poshk.famp, Poshk.gord;
FROM ;
data1!poshk;
WHERE Poshk.gord <> ( "КИЕВ" )
Запрос 3: запрос по неточному совпадению значения одного поля
Скопировать POSHK в POSHK_K. В файле POSHK_K создать дополнительные поля: firstname, lastname. Дополнить записи. Запрос: выбрать поставщиков, имена которых начинаются на "ИВА" или "Ива".
Query3.qpr:
SELECT Poshk_k.famp, Poshk_k.name, Poshk_k.lastname;
FROM ;
data1!poshk_k;
WHERE Poshk_k.famp = ( "ИВА" );
OR Poshk_k.famp = ( "Ива" )
Запрос 4: запрос с вычисляемым полем
Из таблицы poshk_k выбрать: номер поставщика, его ФИО, объединив ФИО в один столбец с именем "ФИО". Уникальное условие запроса: ALLTRIM при объединении удаляет лишние концевые пробелы значения поля.
На вкладке Fields выбрать поле nomp и добавить его в зону Selected Fields. На вкладке Fields в строке Functions and Expressions ввести выражение:
(Alltrim(famp)+” “+ Alltrim(firstname)+” “ +Alltrim(lastname)).
Нажать Add для добавления выражения в зону Selected Fields.
Query4.qpr:
SELECT Poshk_k.nomp,;
ALLTRIM(Poshk_k.famp)+" "+ALLTRIM(Poshk_k.firstname)+" "+ALLTRIM(Poshk_k.lastname) AS фио;
FROM ;
data1!poshk_k
Query5.qpr:
Из ТБД POSKI: выдать информацию за дату 18/09/01.
SELECT *;
FROM ;
data1!poski;
WHERE Poski.data = CTOD("18/09/01")
Query6.qpr:
Из ТБД POSKI: выдать информацию о NOMP, NOMD, NOMR при количестве поставленных деталей >=400 деталей за дату 18/09/01.
SELECT *;
FROM ;
data1!poski;
WHERE Poski.kolw >= ( 400 );
AND Poski.data = CTOD("18/09/01")
Query7.qpr:
Из таблицы poski:
выбрать nomr, nomd;
сохранить результат запроса в области ОП cursor под именем nomrd;
вывести результат запроса из ОП на экран.
SELECT Poski.nomr, Poski.nomd;
FROM ;
data1!poski;
ORDER BY Poski.nomr, Poski.nomd;
Into cursor Nomrd
*Способы сохранения результата выборки не на экране:
*1) Команда ГМ: Query - Query destination
*2) Правой кнопкой мыши щелкнуть на пустом месте бланка запроса и выполнить команду Output Settings
browse
Query8.qpr:
Выдать из таблицы poshk_k поставщиков с фамилией, начинающейся на "И".
SELECT Poshk_k.nomp, Poshk_k.famp, Poshk_k.name, Poshk_k.lastname,;
Poshk_k.gord, Poshk_k.stat;
FROM ;
data1!poshk_k;
WHERE Poshk_k.famp = ( "И" )
Query9.qpr:
Из POSKI подсчитать: общее количество записей, сумму, среднее, максимальное и минимальное значения по полю количество и дата поставок - подсчитать. Информацию сохранить в области ОП "difficult".
SELECT COUNT(*), SUM(Poski.kolw), AVG(Poski.kolw), MAX(Poski.kolw),;
MIN(Poski.kolw), MAX(Poski.data), MIN(Poski.data);
FROM ;
data1!poski;
Into cursor difficult
Browse
Многотабличные запросы
query10.qpr:
Выдать номера поставщиков, их ФИО, номера и наименование деталей, номера разработчиков, количество и даты поставок при условии:
nomd <= "Д3";
диапазон дат от 09/12/01 до 09/20/01;
порядок выдачи результата: nomp, nomd, nomr;
результат сохранить в файле mnt_pr;
вывести результат из файла на экран.
SELECT Poshk.nomp, Poshk.famp, Detl.nomd, Detl.naim, Poski.nomr, Poski.kolw,;
Poski.data;
FROM ;
data1!poshk ;
INNER JOIN data1!poski ;
ON Poshk.nomp = Poski.nomp ;
INNER JOIN data1!detl ;
ON Poski.nomd = Detl.nomd;
WHERE Detl.nomd <= ( "Д3" );
AND Poski.data BETWEEN CTOD("09/12/01") AND CTOD("09/20/01");
ORDER BY Poshk.nomp, Detl.nomd, Poski.nomr;
INTO TABLE mnt_pr.dbf
USE mnt_pr
BROWSE
query11.qpr:
Продолжение многотабличных запросов mnt_pr, proek, выдать то же + наименование проекта.
SELECT Mnt_pr.nomp, Mnt_pr.famp, Mnt_pr.nomd, Mnt_pr.naim, Mnt_pr.nomr,;
Proek.npro, Mnt_pr.kolw, Mnt_pr.data;
FROM ;
data1!mnt_pr ;
INNER JOIN data1!proek ;
ON Mnt_pr.nomr = Proek.nomr;
ORDER BY Mnt_pr.nomp, Mnt_pr.nomd, Mnt_pr.nomr;
INTO CURSOR Ask
BROWSE
query12.qpr:
Выбранные записи упорядочить по фамилии и имени разработчика. Информацию сохранить в области ОП "Z11".
SELECT Poshk.famp, Poski.nomp, SUM(Poski.kolw), COUNT(*) AS p1;
FROM ;
data1!poshk ;
INNER JOIN data1!poski ;
ON Poshk.nomp = Poski.nomp;
GROUP BY Poshk.famp, Poski.nomp;
INTO CURSOR Z11
BROWSE