Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД / Uchpos / Gl_4.doc
Скачиваний:
29
Добавлен:
27.04.2015
Размер:
342.53 Кб
Скачать

Запросы к нескольким таблицам

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

Таблицы в мультитабличном запросе связываются с помощью общих полей, которые содержат одну и ту же разновидность информации, например, поле НомП в таблицах S и SP. Поля не обязательно должны иметь одинаковые имена. Для индикации общих полей в них заносятся элементы-примеры. Кроме того, они позволяют выполнять вычисления над значениями, включать новые записи, базирующиеся на существующих, и т.д.

Для ввода элемента-примера нужно нажать F5 и затем ввести значение, которое в форме запроса выделяется цветом. Значение должно содержать только буквы A - Z и цифры 0 - 9 и не может включать пробелы. Ниже элементы-примеры выделены.

19)

S═╦══НомП════╦════ИмяП════╦════Статус════╦══════Город══════╗

NP ║√ ║ ║ ║

SP════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗

NP ║√ ║√ ║

ANSWER═╦══ИмяП════╦═НомД═╦══Колич══╗

1 ║ База 1 ║ Д3 ║ 4 ║

2 ║ База 1 ║ Д4 ║ 12 ║

3 ║ База 1 ║ Д5 ║ 45 ║

4 ║ База 1 ║ Д7 ║ 278 ║

5 ║ База 1 ║ Д8 ║ 97 ║

6 ║ База 1 ║ Д9 ║ 300 ║

7 ║ База 10 ║ Д1 ║ 34 ║

...

20)

S═╦══НомП═══╦════ИмяП═════╦═════Статус══════╦══════Город══════╗

NP ║√ ║ ║ ║

P═╦═══НомД═══╦════Наим══════╦════Цвет═════╦═Вес═══╦═══Город════╗

ND ║√ ║ ║ ║ ║

SP════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗

║ NP ║ ND ║√ ║

ANSWER═╦══ИмяП════╦═════Наим══════╦══Колич══╗

1 ║ База 1 ║ Верстак ║ 278 ║

2 ║ База 1 ║ Мотор ║ 300 ║

...

Порядок полей в таблице Answer определяется последовательностью форм запросов в рабочем пространстве и порядком полей в каждой таблице.

В мультитабличный запрос можно включить произвольное количество условий выбора. При этом оператор or нельзя использовать с элементом-примером.

21)

S═╦════НомП═══╦════ИмяП═════╦════Статус════╦══════Город══════╗

NP ║√ ║√ as Ст ║√ as Адр ║

P═╦══НомД═══╦══Наим═══╦══Цвет═══╦════Вес════╦═════Город══════╗

ND ║√ ║ ║ >=5,<=20 ║ Киев or Тула ║

SP════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗

║ NP ║ ND ║√ >20 ║

ANSWER═╦══ИмяП══╦══Ст═══╦════Адр═══╦════Наим════╦══Город═╦═Колич═╗

1 ║ База 10║ 15 ║ Рязань ║ Вал ║ Киев ║ 56 ║

2 ║ База 2 ║ 15 ║ Казань ║ Шкив ║ Киев ║ 67 ║

3 ║ База 7 ║ 40 ║ Москва ║ Вал ║ Киев ║ 78 ║

4 ║ База 7 ║ 40 ║ Москва ║ Шкив ║ Киев ║ 98 ║

22)

P═╦══НомД═══╦═════Наим═════╦════Цвет═════╦══Вес════╦═══Город════╗

ND1 ║√ ║√ красный ║√ ║ ║

ND2 ║√ ║√ ║√ >40 ║ ║

SP════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗

║√ ║ ND1 ║√ ║

║√ ║ ND2 ║√ ║

ANSWER═╦═════Наим══════╦════Цвет════╦══Вес══╦═НомП═╦══Колич══╗

1 ║ Верстак ║ Серый ║ 45 ║ П1 ║ 278 ║

2 ║ Верстак ║ Серый ║ 45 ║ П10 ║ 100 ║

3 ║ Верстак ║ Серый ║ 45 ║ П8 ║ 76 ║

4 ║ Верстак ║ Серый ║ 45 ║ П9 ║ 35 ║

5 ║ Мотор ║ Красный ║ 88 ║ П1 ║ 300 ║

6 ║ Редуктор ║ Красный ║ 57 ║ П1 ║ 4 ║

7 ║ Редуктор ║ Красный ║ 57 ║ П3 ║ 45 ║

23) Определить имена поставщиков, поставляющих детали с номерами Д3 и Д5.

S═╦════НомП════╦════ИмяП════╦════Статус════╦═════Город═════╗

NP ║√ ║ ║ ║

SP════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗

║√ NP ║√ Д3 ║ ║

NP ║√ Д5 ║ ║

ANSWER═╦══ИмяП════╦═НомП═╦═НомД═╦НомД-1╗

1 ║ База 1 ║ П1 ║ Д3 ║ Д5 ║

2 ║ База 3 ║ П3 ║ Д3 ║ Д5 ║

24) Определить названия деталей того же цвета, что и деталь с номером Д1.

P═╦═══НомД═══╦═════Наим═════╦════Цвет═════╦══Вес═══╦═══Город════╗

║ Д1 ║ ║ CL ║ ║ ║

║ ║√ ║√ CL ║ ║ ║

ANSWER═╦═════Наим══════╦════Цвет════╗

1 ║ Верстак ║ Серый ║

2 ║ Корпус ║ Серый ║

3 ║ Пила ║ Серый ║

4 ║ Фреза ║ Серый ║

25) Использование элемента-примера при задании диапазона: Определить детали с весом, большим чем у Д3.

P═╦══НомД══╦═════Наим════╦════Цвет════╦══Вес════╦════Город════╗

║ Д3 ║ ║ ║ W ║ ║

║√ ║√ ║ ║√ >W ║ ║

ANSWER═╦══НомД═╦═════Наим══════╦══Вес══╗

1 ║ Д9 ║ Мотор ║ 88 ║

26) Элемент-пример в выражении: Определить детали, которые тяжелее детали Д3 более чем на 5 кг.

P═╦═НомД══╦════Наим════╦════Цвет════╦══Вес════╦════Город════╗

║ Д3 ║ ║ ║ W ║ ║

║√ ║√ ║ ║√ >W+5 ║ ║

ANSWER═╦═НомД═╦═════Наим══════╦══Вес══╗

1 ║ Д3 ║ Редуктор ║ 57 ║

2 ║ Д9 ║ Мотор ║ 88 ║

27) Элемент-пример с оператором not: Определить наименования и номера деталей, поставляемых несколькими различными поставщиками:

P═╦═══НомД═══╦════Наим═════╦════Цвет════╦══Вес════╦════Город════╗

ND ║√ ║ ║ ║ ║

SP════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗

S ║√ ND ║ ║

║ not SND ║ ║

ANSWER═╦═════Наим══════╦═НомД═╗

1 ║ Вал ║ Д12 ║

2 ║ Верстак ║ Д7 ║

3 ║ Корпус ║ Д1 ║

4 ║ ... ║ ║

В примере 19 элемент-пример связывал таблицы S и SP, причем в Answer попадали данные только о тех поставщиках, которые в данный период поставляют какие-либо детали, т.е. номера которых присутствуют и в S, и в SP. Такой вид запроса называется исключающей связью (exlusive link).

Если необходимо включить в Answer всех поставщиков, можно использовать оператор включения (inclusion operator) для установления между двумя таблицами включающей связи (inclusive link). Оператор ! записывается справа от элемента-примера (без пробела между ними) в той таблице, которая будет главной. Это означает, что СУБД выберет все записи в поле с оператором ! до того, как начнет связывать их с соответствующими записями второй таблицы ("lookup" table), из которой выбираются только соответствующие записи.

28)

S═╦═══НомП════╦════ИмяП════╦══════Статус════╦══════Город══════╗

NP! ║√ ║ ║ ║

SP════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗

NP ║√ ║√ ║

ANSWER═╦══ИмяП════╦═НомД═╦══Колич══╗

1 ║ База 1 ║ Д3 ║ 4 ║

2 ║ База 4 ║ Д2 ║ 54 ║

3 ║ База 5 ║ ║ ║

4 ║ ... ║ ║ ║

И в главной, и в зависимой таблицах можно задать условия выбора. При этом необходимо помнить, что сначала выбираются записи главной таблицы до установления связи с зависимой таблицей. Это одни из немногих случаев, когда нужно думать о последовательности выполнения запроса, так как расположение ! в разных таблицах дает различные результаты, например:

29) Определить названия, цвет и вес деталей, хранящихся в Москве, а также номер поставляющего эти детали поставщика и количество поставляемых деталей, если оно превышает 150.

P═╦════НомД════╦═════Наим════╦════Цвет════╦══Вес════╦════Город════╗

ND! ║√ ║√ ║√ ║ Москва ║

SP════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗

║√ ║ ND ║√ >150 ║

ANSWER═╦═════Наим══════╦════Цвет════╦══Вес══╦═НомП═╦══Колич══╗

1 ║ Редуктор ║ Красный ║ 57 ║ ║ ║

2 ║ Стол ║ Желтый ║ 20 ║ П2 ║ 378 ║

3 ║ Стул ║ Желтый ║ 6 ║ ║ ║

30) Определить номера поставщиков и количество деталей в поставляемых партиях, а также, если поставляемые детали хранятся в Москве, название, цвет и вес поставляемых деталей.

P═╦════НомД═══╦════Наим═════╦════Цвет════╦══Вес════╦════Город════╗

ND ║√ ║√ ║√ ║ Москва ║

SP════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗

║√ ║ ND! ║√ >150 ║

ANSWER═╦═════Наим══════╦════Цвет════╦══Вес══╦═НомП═╦══Колич══╗

1 ║ ║ ║ ║ П1 ║ 278 ║

2 ║ ║ ║ ║ П1 ║ 300 ║

3 ║ ║ ║ ║ П9 ║ 300 ║

4 ║ Стол ║ Желтый ║ 20 ║ П2 ║ 378 ║

║ ║ ... ║ ║ ║ ║

Соседние файлы в папке Uchpos