
- •Занятие 3 Инструкция select Простая выборка
- •Выборка с условием (фильтрация)
- •Фильтрация по одному полю
- •Расширенные условия отбора
- •Сортировка
- •Вычисляемые поля
- •Математические операции между столбцами.
- •Функция round
- •Текстовые операции. Сцепление столбцов. Функции len, left
- •Функции Даты
- •Условный оператор iif
- •Занятие 7 Статистические функции в sql
- •Группировка данных
- •Группировка по одному столбцу
- •Группировка по нескольким столбцам
- •Фильтрация групп
- •Сортировка групп
- •Примеры:
- •Фамилия бажанова коваленко лапина
- •Занятие 8 Подзапросы
- •Использование подзапросов возвращающих одно значение
- •Использование подзапросов возвращающих несколько значений
- •Примеры с подзапросами
- •Соединение таблиц
- •Инструкции на изменение данных Инструкция: delete
- •Инструкция update
- •Инструкция: insert into
- •Insert into ИмяТаблицы
- •Комбинированные запросы
Примеры с подзапросами
Ввиду сложности данной темы, рассмотрим использование подзапросов на примере многотабличной реляционной базы данных.
В мастер-таблице "Товары" представлены различные выпускаемые товары.
В мастер-таблице "Клиенты" перечислены фирмы покупающие различные товары.
В дочерней таблице "Заказы" представлены товары, проданные фирмам по определенной цене.
Структура базы данных представлена ниже.
Заказы
Клиенты
Товары
ПКТ
Товар
1
Телевизор
2
Телефон
3
Монитор
4
Компьютер
ВКТ
Цена
ВКК
3
15000
3
2
7351
2
2
3769
3
3
14200
1
2
5987
2
1
30200
3
1
32400
1
4
16800
2
3
14000
1
4
15500
3
2
4800
2
ПКК
Фирма
1
Электрон
2
Аргус
3
Техно
ПКТ - Первичный Ключ Товара
ВКТ - Внешний Ключ Товар
ПКК -Первичный Ключ Клиента
ВКК - Внешний Ключ Клиента
Запрос 1.
Показать цены, по которым были проданы телевизоры.
SELECT Цена
FROM Заказы
WHERE
ВКТ=(SELECT
ПКТ
FROM
Товары
WHERE
Товар = "Телевизор")
Цена
30200
32400
Подзапрос в таблице "Товары" ищет товар Телевизор и возвращает его ключ (ПКТ). Далее, основной запрос, в таблице "Заказы", сравнивает ключ товара (ВКТ) с ключом телевизора, возвращенного подзапрорсом, и при их совпадении, возвращает цену товара.
Запрос 2.
Определить Фирмы, купившие более трех товаров.
SELECT
Фирма
FROM
Клиенты
WHERE
ПКК IN
(SELECT
ВКК
FROM
Заказы
GROUP
BY ВКК
HAVING
COUNT(ВКК)>3)
Фирма
Аргус
Техно
Подзапрос, в таблице "Заказы", по ключам клиентов (ВКК), определяет количество заключенных контрактов с каждым клиентом, и возвращает ключи клиентов купивших более трех товаров.
Основной запрос сравнивает ключ клиента (ПКК) из таблицы "Клиенты", с ключами определенными подзапросом, и при их совпадении возвращает название фирмы.
Запрос 3.
Определить фирмы купившие телевизоры.
SELECT
Фирма
FROM
Клиенты
WHERE
ПКК IN
(SELECT
ВКК
FROM
Заказы
WHERE
ВКТ= (SELECT
ПКТ
FROM
Товары
WHERE
Товар = "Телевизор"))
Фирма
Электрон
Техно
По названию товара определяется первичный ключ товара (ПТК). По ПТК определяются внешние ключи клиентов (ВКТ) купивших данный товар. При совпадении ПКТ и ВКТ возвращается название фирмы.
Запрос 4.
Определить количество товара купленного каждой фирмой.
SELECT
Фирма, (SELECT
COUNT(ВКК)
FROM
Заказы
WHERE
ВКК = ПКК) as Количество
FROM Клиенты
Фирма
Количество
Электрон
3
Аргус
4
Техно
4