Довідковий матеріал

Обмеження на використання конструкції "ОБ'ЄДНАТИ ВСІ" у запитах

У запитах не слід виконувати з'єднання за допомогою конструкції ОБ'ЄДНАТИ ВСІ рядкових полів обмеженої довжини з полями необмеженої довжини, якщо результат об'єднувального запиту впорядковується за допомогою конструкції ВПОРЯДКУВАТИ ЗА.Див. також

Два потоки абстрактних записів об’єднуються в одну лінію: довга стрічка даних обрізається перед сортуванням, показуючи безпечну роботу з полями різної довжини.

Див. також

 

У запитах не слід виконувати з'єднання за допомогою конструкції ОБ'ЄДНАТИ ВСІ рядкових полів обмеженої довжини з полями необмеженої довжини, якщо результат об'єднувального запиту впорядковується за допомогою конструкції ВПОРЯДКУВАТИ ЗА.

Ця вимога зумовлена особливістю виконання подібних запитів у СУБД 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

Див. також

  • Використання ключових слів "ОБ'ЄДНАТИ" та "ОБ'ЄДНАТИ ВСІ" у запитах
Записатися телефоном