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