Справочный материал

Ограничение на использование конструкции "ОБЪЕДИНИТЬ ВСЕ" в запросах

В запросах не следует выполнять соединений с помощью конструкции ОБЪЕДИНИТЬ ВСЕ строковых полей ограниченной длины с полями неограниченной длины, если результат объединяющего запроса упорядочивается с помощью конструкции УПОРЯДОЧИТЬ ПО.См. также

Два потока абстрактных записей объединяются в одну линию: длинная лента данных обрезается перед сортировкой, показывая безопасную работу с полями разной длины.

См. также

 

В запросах не следует выполнять соединений с помощью конструкции ОБЪЕДИНИТЬ ВСЕ строковых полей ограниченной длины с полями неограниченной длины, если результат объединяющего запроса упорядочивается с помощью конструкции УПОРЯДОЧИТЬ ПО.

Данное требование продиктовано особенностью выполнения подобных запросов на СУБД Microsoft SQL Server 2000 SP4 и необходимостью переносимости прикладных решений на эту СУБД.

Например, неправильно:

ВЫБРАТЬ
Т1.Код КАК Поле1,
Т1.Наименование КАК Поле2
ИЗ
Справочник.Справочник1 КАК Т1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Т2.Код,
Т2.РеквизитНеограниченнойДлины
ИЗ
Справочник.Справочник2 КАК Т2
УПОРЯДОЧИТЬ ПО
Поле1

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

Правильно:

1) отказаться от УПОРЯДОЧИТЬ ПО (а сортировку выполнить затем средствами встроенного языка - ТаблицаЗначений.Сортировать)

ВЫБРАТЬ
Т1.Код КАК Поле1,
Т1.Наименование КАК Поле2
ИЗ
Справочник.Справочник1 КАК Т1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Т2.Код,
Т2.РеквизитНеограниченнойДлины
ИЗ
Справочник.Справочник2 КАК Т2

2) использовать функцию ПОДСТРОКА (в случае вывода в список УПОРЯДОЧИТЬ ПО добавляется платформой автоматически к запросу)

 

ВЫБРАТЬ
Т1.Код КАК Поле1,
Т1.Наименование КАК Поле2
ИЗ
Справочник.Справочник1 КАК Т1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Т2.Код,
ПОДСТРОКА(Т2.РеквизитНеограниченнойДлины, 1, 1000)
ИЗ
Справочник.Справочник2 КАК Т2
УПОРЯДОЧИТЬ ПО
Поле1

См. также

  • Использование ключевых слов "ОБЪЕДИНИТЬ" и "ОБЪЕДИНИТЬ ВСЕ" в запросах
Записаться по телефону