Как сделать "двойное" условие запросе для конструкции "В"? #666539


#0 by ИС-2
Как написать такое двойное условие в запросе? Видел, что делали такие выражения, но не помню где И, вообще, насколько правильно использовать условие в иерархии для связей?
#1 by mikecool
ИЗ
#2 by mikecool
но имхо - не взлетит, проверять надо
#3 by ssh2012
> насколько правильно использовать условие в иерархии для связей? В условиях связей нельзя исп-ть В ИЕРАРХИИ
#4 by H A D G E H O G s
В ИЕРАРХИИ использовать не правильно. И, как показала недавняя эмпирика, (Таблица1.Значение1, Таблица1.Значение2) В       Тоже не гуд.
#5 by H A D G E H O G s
Лучше ВНУТРЕННЕЕ СОЕНИДЕНИЕ.
#6 by mikecool
а чт оза эмпирика получилась?
#7 by H A D G E H O G s
пост 77 и ниже.
#8 by acsent
так это и есть внутреннее соединение, разве нет?
#9 by mikecool
судя по всему - нет
#10 by ИС-2
тоже так думаю. Но пока буду спасибо дык не получается сделать. Надо ВТ_Док.Координата в иерархии(ВТ_Координаты.Координата) такую конструкцию тоже не хочет ВЫБОР    КОГДА ИСТИНА В            (ВЫБРАТЬ                ВТ_3_КоординатаОрганизация.ЕстьЗапись            ИЗ
#11 by Sorm
Временная таблица и джойн. Особенно в нагруженных системах, массовых запросах.
#12 by ИС-2
выше
#13 by Fragster
а что в решили? что 100%? получается RLS всегда фуллскан, чтоли?
#14 by Fragster
а, не, я тупой после инфостарта что-то
#15 by Serginio1
Можно по другому пойти (Таблица1.Значение1) В       Желательно, что бы Значение2 было индексировано
#16 by ИС-2
только Таблица1.Значение2 не содержиться в этой выборке
#17 by Serginio1
приходилось отбирать во временную таблицу а затем индексировать. Правда в последующих версиях нельзя использовать кортеж из двух и более если есть поля первой таблицы в условиях Выбрать * Из Таблица как таблица Где (Объект, СчетФактура) В (Выбрать первые 1 док.Объект,док.Счетфактура из ИЗ                        Документ КАК Док Это проходило в v8: Подзапросы с Выбрать Первые Но затем они если поле таблицы учавствут в ограничении, в условии можно использовать только одно поле. v8: запрос. найти посл. поступление! Иможно использовать только ВЫБРАТЬ    втИндекс.Ссылка КАК Ссылка,    втИндекс.Номенлатура КАК Номенлатура          (ВЫБРАТЬ ПЕРВЫЕ 1               док.Ссылка
#18 by Serginio1
#19 by Fragster
да, так работает, но медленновато
#20 by Fragster
даже с индексом получаем фулскан основной + 100500 индекс сиков по индексированной вложенной
#21 by Serginio1
Не знаю. У меня очень быстро работало на таблицах с 4 млн. записей. Там получался такой запросс         (ВЫБРАТЬ ПЕРВЫЕ 1               док.Ссылка Где BT была упорядочена по Ссылка,Номенклатура,Дата
#22 by Serginio1
Вернее проиндексировано
#23 by Fragster
а план что показывал? у меня на классическом примере с курсом валют (правда "первые 2") вот так: wstaw.org/m/2013/05/16/0.png
#24 by Serginio1
Честно не смотрел. Просто в той ж там индексирование временной таблицы давало огромный эффект. Мне нужно было найти прайс с минимальной ценой и максимальном количеством остатков (может быть несколько прайсов с одинаковой ценой). То есть в 21 это временная таблица проиндексированная по нужным полям.
#25 by Serginio1
23
#26 by Fragster
а план-то где?
#27 by Serginio1
А не делал. Мне интересно было заставить быстро работать. Там генерация запроса. У меня свой план в голове.
#28 by Fragster
0,1 и 0,01 визуально работают практически одинаково, но нагрузку дают разную и когда народу много - очень разные порой артефакты вылезают
#29 by Fragster
0.1 и 0.01 секунды
#30 by Serginio1
Я вот одного не пойму почему они EXISTS не введут.Вроде как стандарт SQL.
#31 by Fragster
не SQl, а T-SQL - мелкософтовского диалекта
#32 by Serginio1
EXISTS  это стандарт SQL 92
#33 by Fragster
ну тогда может посчитали, что Где 1 в (выбрать первые 1) достаточно. тем более, что они сами на эксистс частенько заменяют язык запросов 1с, например для (поле 1, поле2) в (выбрать...)
#34 by Serginio1
Там же 40,41 Вариант WHERE EXISTS( SELECT CAST(1 AS NUMERIC(1,0)) AS f_1 FROM ( SELECT TOP 1 #Te85f61ac690c437aaf9abb367656dabb_Q_002_T_001._Q_000_F_000RRef AS _Q_002_F_000RRef, #Te85f61ac690c437aaf9abb367656dabb_Q_002_T_001._Q_000_F_001 AS _Q_002_F_001 FROM #tt7 #Te85f61ac690c437aaf9abb367656dabb_Q_002_T_001 WITH(NOLOCK)
#35 by Serginio1
Мало того например используя в в 7 ке 1С++ я могу добавить в текст запроса отсебятину, которая прекрасно проходит. Declare @ЗаказНаФабрику as char; SELECT @ЗаказНаФабрику=Журнал7.IDDOC FROM _1SJOURN AS Журнал7 With (NOLOCK) WHERE (Журнал7.IDDOCDEF = 2742) AND (Журнал7.DOCNO = 'РГ07814'); SELECT * FROM $Регистр.Тест AS Тест WHERE (Тест.DEBKRED=1) and AND  ($Тест.ЗаказНаФабрику = @ЗаказНаФабрику)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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