Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦОО_ИСБУ_Лек3.doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
684 Кб
Скачать
☆

Правое внешнее соединение

Конструкция ПРАВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Кроме того, в результат запроса надо включить еще и записи из второго источника (указанного справа от слова СОЕДИНЕНИЕ), для которых не найдено соответствующих условию записей из первого источника.

Таким образом, в результат запроса будут включены все записи из второго источника; они будут соединены с записями из первого источника при выполнении указанного условия. Строки результата запроса, для которых не найдено соответствующих условию записей из первого источника, будут содержать значение NULL в полях, формируемых на основании записей из этого источника.

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

ВЫБРАТЬ Спр.Наименование, Peг.Курс

ИЗ РегистрСведений.КурсыВалют.СрезПоследних КАК Peг

ПРАВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ Справочник.Валюты КАК Спр

ПО Спр.Ссылка = Peг.Валюта

Полное внешнее соединение

Конструкция ПОЛНОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Кроме того, в результат запроса надо включить также еще и те записи из обоих источников, для которых не найдено соответствий.

Таким образом, в результат запроса будут включены все записи из обоих источников; они будут соединены друг с другом при выполнении указанного условия. Строки результата запроса, для которых не найдено соответствующих условию записей из какого-либо источника, будут содержать NULL в полях, формируемых на основании записей из этого источника.

  • Предложение ГДЕ / WHERE

Предложение ГДЕ позволяет задать условие отбора данных из исходных таблиц-источников запроса. В запросе будут выбраны только те записи, для которых выполняется заданное условие.

Например, выберем товары с ценой, большей или равной определенному значению:

ВЫБРАТЬ Наименование, ЗакупочнаяЦена КАК Цена

ИЗ Справочник.Номенклатура

ГДЕ ЗакупочнаяЦена >= 1300

Результат запроса будет следующий:

Наименование

Цена

Монитор LCD 22" M8537ZM/A

1 540

Ноутбук Rover Computers Explorer

1 326

Сист. блок Hewlett-Packard Brio BA410

1 633

Сист. блок Hewlett-Packard Vectra VL420

1 699

Логические операторы и, или, не

В условиях можно использовать логические операторы И, ИЛИ, НЕ, с помощью которых можно строить достаточно сложные ло­гические выражения.

Например, выберем товары, произведенные в России по цене, меньшей определенного значения:

ВЫБРАТЬ Наименование,

ЗакупочнаяЦена КАК Цена,

СтранаПроисхождения КАК Страна

ИЗ Справочник.Номенклатура

ГДЕ СтранаПроисхождения = "Россия" И ЗакупочнаяЦена < 1000

Наименование

Цена

Страна

1C: Бухгалтерия 7.7

35

Россия

1C: Аспект 7.7

45

Россия

1С:Торговля и Склад 7.7

140

Россия

1C: Бухгалтерия 7.7

35

Россия

При указании нескольких логических сомножителей И, ИЛИ, НЕ целесообразно расставлять скобки, чтобы правильно определить порядок выполнения логических операций и повысить наглядность запроса.

Например, следующие два запроса могут привести к неожидан­ным для программиста результатам, потому что оператор И имеет больший приоритет, чем ИЛИ (а оператор НЕ имеет еще боль­ший приоритет, чем И):

ВЫБРАТЬ Наименование,

ЗакупочнаяЦена КАК Цена,

СтранаПроисхождения КАК Страна

ИЗ Справочник.Номенклатура

ГДЕ СтранаПроисхождения = "Россия" ИЛИ СтранаПроисхождения = "США" И ЗакупочнаяЦена < 1000

В результате мы получим следующие записи:

Наименование

Цена

Страна

Клавиатура Apple Pro Keyboards

50

США

Лазерный принтер Minolta-QMS

361

США

Лазерный принтер HP LaserJet 2200

720

США

Монитор 19" Hitachi CM715ET

300

Россия

Ноутбук Rover Computers Explorer

1326

Россия

Этот запрос будет интерпретирован системой как «Выбрать все товары из страны Россия, независимо от цены, а также товары из страны США, которые дешевле 1000». Т.е. условие по цене будет проверяться только для товаров из США, а товары из России будут включены в запрос при любой цене.

Вероятно, программист имел в виду совсем другое: «Выбрать товары из России и США, которые дешевле 1000», что реализовано вторым запросом. Условие по цене будет проверяться для всех товаров, независимо от страны-производителя:

ВЫБРАТЬ Наименование, ;

ЗакупочнаяЦена КАК Цена,

СтранаПроисхождения КАК Страна

ИЗ Справочник.Номенклатура

ГДЕ (СтранаПроисхождения = "Россия" ИЛИ СтранаПроисхождения = "США") И ЗакупочнаяЦена < 1000

Наименование

Цена

Страна

Клавиатура Apple Pro Keyboards

50

США

Лазерный принтер Minolta- QMS

361

США

Лазерный принтер HP LaserJet 2200

720

США

Монитор 19" Hitachi CM715ET

300

Россия

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