- •Лабораторная работа №7
- •7.1. Типы запросов данных в sql
- •7.2. Формирование запросов из тбд командным способом
- •Указание результатов выборки и источников данных
- •Указание объекта, куда пересылается выборка
- •Критерий отбора данных
- •Группирование данных
- •7.2.1.2. Сложные однотабличные и многотабличные запросы (несколько условий отбора)
- •7.3.Оператор select, формируемый интерактивным способом с помощью метода построения запроса qbe
- •7.3.1. Характеристика до «Конструктор запросов»
- •7.3.2. Файлы запросов на языке sql и результаты их выполнения
- •7.3.2.1. Однотабличные запросы Запрос 1: запрос по точному совпадению значения одного поля
- •Внимание !
- •1.Предъявляемые ниже тексты всех остальных запросов служат для проверки правильности настройки конкретного бланка запроса.
- •Запрос 3: запрос по неточному совпадению значения одного поля
- •Запрос 4: запрос с вычисляемым полем
- •Запрос 5: запрос поиск по точному совпадению значения даты
- •Самостоятельная работа
- •7.2.1.2. Многотабличные запросы
- •Сложные запросы.
- •Вложенные запросы.
- •Values (‘п6’, ‘Быков’, ‘Москва’, 30, ‘Иван’, ‘Борисович’)
- •7.6 Арифметические операции в опции where
7.2.1.2. Сложные однотабличные и многотабличные запросы (несколько условий отбора)
1. Дать список поставщиков, имеющих статус 10 И проживающих в Донецке.
SELECT nomp, famp, gord, stat FROM Data1!POSHK;
WHERE stat=10 AND gord=‘ДОНЕЦК’
2.Дать список поставщиков, проживающих в городе Киев ИЛИ МОСКВА.
SELECT nomp, famp, gord, stat FROM Data1!POSHK;
WHERE gord=‘КИЕВ’OR gord=‘МОСКВА’
Самостоятельная работа: написать объяснение опций, используемых в приведенных примерах.
3. Вывести номера поставщиков, поставляющих количество деталей от 500 до 1200 штук.
SELECT nomp, kolw FROM Data1!POSKI WHERE kolw BETWEEN 500 AND 1200
4.Вывод фамилий всех поставщиков, кроме поставщиков, не проживающих в МОСКВЕ и КИЕВЕ.
SELECT famp, gord FROM Data1!POSHK WHERE gord NOT IN (‘МОСКВА’,‘КИЕВ’)
5.Выборка номеров поставщиков с количествами поставляемых ими деталей без повторений.
SELECT DISTINCT nomp, kolw FROM data1!poski
Самостоятельная работа:
1) выбрать количество деталей и номера поставляющих их поставщиков без повторений;
2) сравнить количество выбранных строк в полученных выборках с количеством строк в исходном файле poski и сделать вывод о работе опции DISTINCT команды SELECT.
6. Вывод из ТБД POSHK.DBF всех поставщиков, имеющих в фамилии сочетания букв "РО", и их города.
SELECT poshk.famp, poshk.gord FROM data1!poshk WHERE poshk.famp LIKE "%РО%"
7. Выбрать все поля соответствующих строк из ТБД poshk, где значение столбца (поля) stat >= 10, а также значения поля famp, находящиеся в промежутке от фамилии Иванов до фамилии Сидоров, или же имеющее значение поля gord, которым является Киев.
SELECT * FROM data!poshk;
WHERE ((STAT>=10); and (FAMP BETWEEN ‘Иванов’ and ‘СИДОРОВ’))
OR GORD Like ‘%Киев%’
8. Выборка всех номеров и наименований деталей файла из DETL.DBF, сцепленных с номерами деталей из ТБД POSKI.DBF, для записей, у которых номера деталей равны значению "Д5".
SELECT detl.nomd, detl.naim, poski.kolw, poski.data;
FROM Data1!detl, Data1!Poski;
Where detl.nomd=”Д5” and poski.nomd=”Д5”.
9.Если мы хотим задать собственные имена колонкам, а не использовать умолчания, нужно воспользоваться опцией AS (в качестве).
Пусть нужно вывести номера поставщиков и их фамилии (поля nomp и famp) по алфавиту, но с другими именами колонок, например, с именами Номер_поставщика и Фамилия_поставщика.
SELECT nomp AS Номер_поставщика, famp AS Фамилия_поставщика FROM Data1!POSHK_K ORDER BY famp
Самостоятельная работа: записать результат запроса в таблицу POSHK_AS, и вывести на экран содержимое таблицы с заголовком 'Переименованные поля таблицы Poshk_k'.
10. Вывод минимального, максимального и среднего значений поля KOLW (среднее значение). Колонки получат исходные имена MIN_KOLW, MAX_KOLW и AVG_KOLW, которые следует переименовать.
SELECT MIN(KOLW),MAX(KOLW),AVG(KOLW) FROM Data1!POSKI
11. Вывод полей nomd и cena из файла DETL, kolw и data из файла POSKI с расчетом суммы за поставки и с расчетом скидки. Присвоение имен Сумма_без_скидки, Скидка и Сумма_со_скидкой вычисленным полям.
SELECT detl.nomd, detl.cena, poski.kolw, poski.data, (poski.kolw * detl.cena) as Сумма_без_скидки, (poski.kolw * detl.cena)*0.2 as Скидка, ((poski.kolw * detl.cena)-(poski.kolw * detl.cena)*0.2) as Сумма_со_скидкой FROM data1!detl, poski
Чтобы увидеть содержимое этой ТБД, можно, например, сразу ввести команду BROWSE.
Самостоятельная работа: записать результат запроса в таблицу Vichisl, и вывести на экран содержимое таблицы с заголовком 'Вычисления в таблицах Poski, Detl'.
