Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SQL Учебник.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1.28 Mб
Скачать

Примеры с подзапросами

Ввиду сложности данной темы, рассмотрим использование подзапросов на примере многотабличной реляционной базы данных.

В мастер-таблице "Товары" представлены различные выпускаемые товары.

В мастер-таблице "Клиенты" перечислены фирмы покупающие различные товары.

В дочерней таблице "Заказы" представлены товары, проданные фирмам по определенной цене.

Структура базы данных представлена ниже.

Заказы

Клиенты

Товары

ПКТ

Товар

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]