|   |   | 
| 
 | Как в 1С написать конструкцию следующего вида? | ☑ | ||
|---|---|---|---|---|
| 0
    
        Said_We 21.12.16✎ 16:46 | 
        Select 
 A.A ,(Select Top 1 B.A From B as B Where A.A = B.A Order by B.B) as B From A as A | |||
| 1
    
        Said_We 21.12.16✎ 16:48 | 
        Что-то грустно писать по два левых соединения что бы по периодам разбить и вытащить значения.     | |||
| 2
    
        mkalimulin 21.12.16✎ 16:48 | 
        У тебя второе поле результата - таблица?     | |||
| 3
    
        Said_We 21.12.16✎ 16:49 | 
        нет
 Это одно значение. В MS SQL такие конструкции работают. | |||
| 4
    
        Said_We 21.12.16✎ 16:50 | 
        В ОРАКЛЕ наверняка тоже.
 По моему это стандарт 92 или 95 года (могу конечно ошибаться). | |||
| 5
    
        Garykom гуру 21.12.16✎ 16:56 | 
        (1) Догадайся в какое кол-во "левых соединений" превращает интерпретатор sql движка изврат из (0) ?     | |||
| 6
    
        mehfk 21.12.16✎ 17:01 | 
        (0) Разработчики платформы еще не дошли до того места в Books Online где такая инструкция описана.     | |||
| 7
    
        Said_We 21.12.16✎ 17:08 | 
        (5) А что догадываться. Я попробовал написать стандартно через два левых соединения и через эту конструкцию на большом количестве строк в таблице.
 Пробовал пару лет назад ещё на 7.7 на 1С++ на MS SQL и SQLLite. Результат на MS SQL и SQLLite немного разный, но в любом случае на 1-2 порядка быстрее будет конструкция в (0). | |||
| 8
    
        Said_We 21.12.16✎ 17:12 | 
        (5) В Консоле MS SQL самостоятельно попробуйте.
 Почему про 7.7 упомянул? В 7.7 периодические значения реквизитов всех справочников хранятся в одной таблице. Поэтому таблица огромная и тяжёлая. На ней хорошо видна разница в скорости выполнения. | |||
| 9
    
        Said_We 21.12.16✎ 17:13 | 
        (6) Books Online - это что имеется ввиду?     | |||
| 10
    
        Cool_Profi 21.12.16✎ 17:14 | 
        (9) И этот человек жалуется, что в 1с что-то не реализовано, а вот в SQL...     | |||
| 11
    
        Garykom гуру 21.12.16✎ 17:15 | 
        (7) "Для перекрёстного соединения (декартова произведения) CROSS JOIN в некоторых реализациях SQL используется оператор «запятая» (,)"
 Просто конструкция из (0) в MS SQL и прочих выполняется более параллельно, начинает строить внешние "все сочетания" сразу как только выдается какой то результат от внутреннего подзапроса в скобках. При последовательном выполнении в 1С с использованием к примеру ВТ общее время да будет больше, но при этом средняя нагрузка на систему меньше (другие процессы/сеансы/пользователи не так пострадают). | |||
| 12
    
        mehfk 21.12.16✎ 17:15 | ||||
| 13
    
        Said_We 21.12.16✎ 17:17 | 
        (10) Кто жалуется? Я спросил как это в 1С 8 запустить?     | |||
| 14
    
        Cool_Profi 21.12.16✎ 17:18 | 
        (13) Ну нет такого в языке запросов 1с     | |||
| 15
    
        Said_We 21.12.16✎ 17:23 | 
        (11) Не совсем понял что такое "более параллельно"? Чем-то напоминает "немножко беременна".
 Кто говорит что таблица В в (0) не может быть ВТ с необходимым индексом по полю В? "средняя нагрузка на систему меньше..." Если запрос выполняется пару минут и пару секунд, то как от пары секунд пользователи сильнее пострадают? А именно такая разница парой получается. Чушь по моему какая-то. (13) И кроме прямых запросов хитростей никаких нет? | |||
| 16
    
        Said_We 21.12.16✎ 17:27 | 
        (12) А это... :-)     | |||
| 17
    
        Fragster гуру 21.12.16✎ 17:29 | 
        Основная
 левое соединение Таб По 1 В (Выбрать Первые 1 1 Из Таб Как ТабОтбор Где ТабОтбор.Поле = Основная.Поле Упорядочить По ТабОтбор.Ключ) | |||
| 18
    
        Said_We 21.12.16✎ 17:32 | 
        (17) Ну что-то похожее. Завтра попробую.     | |||
| 19
    
        Said_We 21.12.16✎ 17:33 | 
        (17) Спасибо.     | |||
| 20
    
        Fragster гуру 21.12.16✎ 17:34 | 
        возможно я накосячил и надо так:
 Основная левое соединение Таб По Таб.Ключ В (Выбрать Первые 1 ТабОтбор.Ключ Из Таб Как ТабОтбор Где ТабОтбор.Поле = Основная.Поле Упорядочить По ТабОтбор.Ключ) | |||
| 21
    
        Said_We 21.12.16✎ 17:38 | 
        (20) Я суть понял. В РЛС такое часто используют.
 Единственное никогда не видел упорядочить внутри этой конструкции. Вот это собственно и попробую. | |||
| 22
    
        rabbidX 21.12.16✎ 17:39 | 
        (20) Это соединение с вложенным запросом? Некошерно же. И почему условия соединения самого вложенного запроса? Или я неправильно понял Ваш запрос?     | |||
| 23
    
        rabbidX 21.12.16✎ 17:41 | 
        +(22) через ВТ красивше.     | |||
| 24
    
        Fragster гуру 21.12.16✎ 17:42 | 
        (21) первый вариант даст все записи из соединяемой таблицы, нужен второй
 (22) нет, это вложенный запрос в условиях соединения | |||
| 25
    
        Fragster гуру 21.12.16✎ 17:42 | 
        (23) через ВТ медленнее     | |||
| 26
    
        rabbidX 21.12.16✎ 17:47 | 
        (0) из таблицы А в результрующую выборку должно попасть то же поле, которое прописано в соединении? 
 Тогда можно так Выбрать В.А, Минимум(В.В) Из В Как В Где В.А в (Выбрать А.А Из А Как А) Сгруппировать по В.А | |||
| 27
    
        rabbidX 21.12.16✎ 17:50 | 
        (25) на больших индексированных таблицах может и не медленнее быть в теории.     | |||
| 28
    
        Fragster гуру 21.12.16✎ 17:52 | 
        (27) на больших индексированных таблицах само создание временной таблицы убьет идею     | |||
| 29
    
        Said_We 21.12.16✎ 18:05 | 
        (26) Неа.
 Результат совсем другой будет в запросах в (0) и в (26). Даже по количеству строк. Строк должно быть столько сколько в А. В варианте (26) строк будет либо как в В либо меньше. Я не зря в (1) написал про разбиение по периодам. Даты окончания периода может и не быть - т.е. действует до сих пор. | |||
| 30
    
        Said_We 21.12.16✎ 18:58 | 
        (20) ДА!!!
 Так работает. Спасибо большое. | |||
| 31
    
        Said_We 21.12.16✎ 19:11 | 
        Не (0) конечно, но и не два левых соединения, а одно.     | |||
| 32
    
        mistеr 21.12.16✎ 19:24 | 
        (14) Такое есть в языке СКД.     | |||
| 33
    
        Said_We 22.12.16✎ 01:18 | 
        (32) Пример есть?     | |||
| 34
    
        Said_We 22.12.16✎ 14:11 | 
        (32) Потерялся... UP     | |||
| 35
    
        mistеr 22.12.16✎ 14:16 | 
        (33) ВычислитьВыражение()     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |