Выбрать первые 1 выдает не первую запись #616122


#0 by OnCheck
Здравствуйте. Текст запроса ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1    ПодразделенияОрганизаций.Ссылка,    ПодразделенияОрганизаций.Владелец.Наименование КАК НазваниеОрганизации ИЗ    Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций выдает не ту запись, которая стоит первой в результате запроса ВЫБРАТЬ РАЗРЕШЕННЫЕ    ПодразделенияОрганизаций.Ссылка,    ПодразделенияОрганизаций.Владелец.Наименование КАК НазваниеОрганизации ИЗ    Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций    ПодразделенияОрганизаций.Наименование ИЕРАРХИЯ При чем одну и ту же. Не могу понять, с чем связано. Помогите советом. Спасибо.
#1 by mikecool
субд?
#2 by mikecool
и вообще - а должен?
#3 by OnCheck
SQL
#4 by OnCheck
а почему нет?
#5 by Прохожий
Может иерархический справочник?
#6 by OnCheck
ну да, иначе смысл упорядочивать по иерархии?
#7 by Андрюха
Попробуй сначала без ПЕРВЫЕ 1, выдаст что-нибудь вообще?
#8 by azernot
Дай угадаю, в результате запроса первый стоит родитель того самого элемента котрый выдаётся как первый?
#9 by OnCheck
так в том то и дело что разные результаты выдает с первый и без первые!
#10 by Прохожий
Справочник упорядочивается по наименованию по всем записям, а иерархическая выборка первого может ограничиваться принадлежностью к группе в первой записи таблицы, наверно...
#11 by Ненавижу 1С
потому что ПЕРВЫЕ 1 выполняет СУБД и находит оное а УПОРЯДОЧИТЬ ПО    ... ИЕРАРХИЯ делается уже позже и причем на сервере приложений
#12 by OnCheck
нет, фактически уровень 1
#13 by Ненавижу 1С
не угадал ))
#14 by OnCheck
это типовой код в ЗУП, блин... как править?
#15 by Прохожий
Группа1 ---Подргуппа1 -------"Булка" "Арбуз" Может выходит так: Результат 1 - "Булка" Результат 2 - "Арбуз"
#16 by acsent
а как можно по наименованию по иерархии упорядочить?
#17 by Прохожий
?
#18 by OnCheck
как отправить конкретный элемент в топ этой выборки?
#19 by OnCheck
как отправить конкретный элемент в топ этой выборки?
#20 by palpetrovich
а так что дает? ВЫБРАТЬ ПЕРВЫЕ 1
#21 by azernot
Убрать к чёрту слово ИЕРАРХИЯ
#22 by OnCheck
не то что дает в первой строчке без "первые 1" не хотелось бы, типовой код, там суть в том что поставщиком табличного поля является справочникСписок подразделения организаций. И при проходе по этому списку первым идет именно тот элемент который возвращает запрос без "первые 1".
#23 by OnCheck
+ именно так они идентифицирую первый элемент выборки и для него заводят корневой элемент - организация
#24 by OnCheck
полагаю, что в запросе select top 1 на СУБД упорядочивается по ГУИД?
#25 by exchang
может сперва отсортировать и потом выбрать 1?
#26 by Jaap Vduul
ВЫБРАТЬ Ссылка, НазваниеОрганизации ИЗ (ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1    ПодразделенияОрганизаций.Ссылка,    ПодразделенияОрганизаций.Владелец.Наименование КАК НазваниеОрганизации ИЗ    Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций    ПодразделенияОрганизаций.Наименование) УПОРЯДОЧИТЬ ПО Ссылка ИЕРАРХИЯ
#27 by mikecool
а так будет правильно? ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1    ПодразделенияОрганизаций.Ссылка,    ПодразделенияОрганизаций.Владелец.Наименование КАК НазваниеОрганизации (ВЫБРАТЬ    ПодразделенияОрганизаций.Ссылка,    ПодразделенияОрганизаций.Владелец.Наименование КАК НазваниеОрганизации ИЗ    Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
#28 by andrewks
выбрать первые 1 из (выбрать бла-бла-бла упорядочить...)
#29 by mikecool
вернее так ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1    ПодразделенияОрганизаций.Ссылка,    ПодразделенияОрганизаций.Владелец.Наименование КАК НазваниеОрганизации (ВЫБРАТЬ    ПодразделенияОрганизаций.Ссылка,    ПодразделенияОрганизаций.Владелец.Наименование КАК НазваниеОрганизации ИЗ    Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций УПОРЯДОЧИТЬ ПО    ПодразделенияОрганизаций.Наименование ИЕРАРХИЯ) Как ПодразделенияОрганизаций
#30 by andrewks
зачем второе упорядочивание?
#31 by Jaap Vduul
Для иерархии
#32 by OnCheck
да это все понятно, хотел поправить не переписывая запрос. Думаю про проверить вариант с упорядочиванием по ГУИД.
#33 by thargon
"полагаю, что в запросе select top 1 на СУБД упорядочивается по ГУИД?" - нет,  если порядок явно не указан - то порядок вывода не определен и может быть любым на усмотрение оптимизатора...
#34 by OnCheck
Возможно, но возвращает один и тот же элемент справочника
#35 by andrewks
да поймы ты, СУБД тебе не обязана вернуть 1-ю запись с учётом упорядочивания, оно уже потом выполняется. поэтому надо явно об этом попросить
#36 by andrewks
+ более того, в разных СУБД можно получить разные записи. и даже в одной СУБД теоретически можно получить разные записи
#37 by OnCheck
но 1с ники же сделали так и работало, пока не поломал :-)!
#38 by thargon
а порядок согласно стандарту все равно не определен :) В реальных случаях он будет в основном один и тот же, но случай когда оптимизатор решит, что теперь записи удобнее выгребать в другом порядке - возможен. Это может произойти из-за того, что статистика обновилась, индексы пересчитались, селективность индексов изменилась, апдейт на sql очередной поставили, вообще сервер sql поменяли на более другой...
#39 by andrewks
т.е. 1. выбрать первую запись, удовлетворяющую заданным условиям 2. группируем 3. упорядочиваем вот здесь много букв:
#40 by Jaap Vduul
Вообще, если в упорядочивании указано ИЕРАРХИЯ, то сортировка на уровне СУБД выполняется сначала по ID родителя, затем по ID элемента, вне зависимости от того какое поле указано для сортировки в самом запросе.
#41 by OnCheck
вот такой запрос я вижу на скуле. exec sp_executesql N'SELECT TOP 1 T1._IDRRef, T2._Description, T1._ParentIDRRef, T1._Description FROM _Reference94 T1 WITH(NOLOCK) LEFT OUTER JOIN _Reference80 T2 WITH(NOLOCK) WHERE (T1._OwnerIDRRef = ) ORDER BY (T1._ParentIDRRef), (T1._IDRRef)',N' varbinary',0x00000000000000000000000000000000 ORDER BY тут есть, упорядочивает он по ParentIDRRef, IDRRef. теперь задача как правильно поправить ID-шники
#42 by OnCheck
Уникальный идентификатор и есть IDRef?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С