Объединение более двух таблиц

Вы можете также создавать запросы объединяющие более двух таблиц. Предположим, что мы хотим найти все Продаж заказчиков не находящихся в тех городах, где находятся их продавцы. Для этого необходимо связать все три наши типовые таблицы (вывод показывается в Рисунке 20):

SELECT onum, cname, Orders.cnum, Orders.snum
FROM Salespeople, Customers,Orders
WHERE Customers.city < > Salespeople.city
AND Orders.cnum = Customers.cnum
AND Orders.snum = Salespeople.snum;

Рисунок 20 Объединение трех таблиц

Хотя эта команда выглядит скорее как комплексная, вы можете следовать за логикой, просто проверяя - что заказчики не размещены в тех городах где размещены их продавцы (совпадение двух snum полей), и что перечисленные Продажи - выполнены с помощью этих заказчиков (совпадение Продажи с полями cnum и snum в таблице Продажи ).

Практическая часть

1. Напишите запрос который сосчитал бы все суммы приобретений на 3 Октября.

2. Напишите запрос который сосчитал бы число различных не-NULL значений поля city в таблице Заказчиков.

3. Напишите запрос который выбрал бы наименьшую сумму для каждого заказчика.

4. Напишите запрос который бы выбирал заказчиков в алфавитном порядке, чьи имена начинаются с буквы G.

5. Напишите запрос который выбрал бы высшую оценку в каждом городе.

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

7. Предположим что каждый продавец имеет 12% комиссионных. Напишите запрос к таблице Продажи который мог бы вывести номер продажи, номер продавца, и сумму комиссионных продавца.

8. Напишите запрос к таблице Заказчиков который мог бы найти наивысший рейтинг в каждом городе. Вывод должен быть в такой форме:

В городе (city), наивысший рейтинг: (rating).

9. Напишите запрос который выводил бы список заказчиков в нисходящем порядке. Вывод поля оценки (rating) должден сопровождаться именем закзчика и его номером.

10.Напишите запрос который бы выводил общие Продажи на каждый день и помещал результаты в нисходящем порядке.

11.Напишите запрос который бы вывел список номеров Продаж сопровождающихся именем заказчика который создавал эти Продажи.

12.Напишите запрос который бы выдавал имя продавца и заказчика для каждой продажи после номера Продажи.

13.Напишите запрос который бы выводил всех заказчиков обслуживаемых продавцом с комиссионными выше 12% . Выведите имя заказчика, имя продавца, и ставку комиссионных продавца.

14.Напишите запрос который вычислил бы сумму комиссионных продавца для каждий продажи заказчика с оценкой выше 100.

Контрольные вопросы:

  1. Как объединить таблицы?
  2. Каким образом поместить текст в вывод запроса?
  3. Как работает предложение HAVING.
  4. Что такое агрегатные функции

 

 


ПРАКТИЧЕСКАЯ РАБОТА

Тема: Запросы SQL (3 часть)

Цель:

1. Объединение таблицы с собой

2. Вставка одного запроса внутрь другого

Оборудование и/или программное обеспечение:IBM PC,MS Access /OpenOfficedBase.

Теоретическая часть