Имя: Пароль:
1C
 
Как упростить запрос?
,
0 Помогите
 
19.01.15
06:11
ВЫБРАТЬ
    ТоварыНаСкладах.Количество,
    СвойстваТоваров.Значение
ИЗ
    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК СвойстваТоваров2
        ПО ТоварыНаСкладах.Номенклатура = СвойстваТоваров2.Ссылка
            И (СвойстваТоваров2.Свойство = &Цвета)
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК СвойстваТоваров
        ПО ТоварыНаСкладах.Номенклатура = СвойстваТоваров.Ссылка
            И (СвойстваТоваров.Свойство = &ВидТовара)
            И (СвойстваТоваров.Значение = "Телевизоры")
1 Помогите
 
19.01.15
06:15
У товаров есть табличная часть ДополнительныеРеквизиты в которой хранятся свойства.
Выбираю остатки товаров по регистру остатков, но с условием что свойство "ВидТовара" равно "Телевизоры" (это внутреннее соединение с таб. частью)
А так же мне нужно получить цвет товара, поэтому еще и Левое соединение делаю.
Получается два соединения с одной таблицей но с разными условиями. Правильно делаю?
2 Cube
 
19.01.15
06:23
ВЫБРАТЬ
    ТоварыНаСкладах.Количество,
    СвойстваТоваров.Значение
ИЗ
    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК СвойстваТоваров
        ПО ТоварыНаСкладах.Номенклатура = СвойстваТоваров.Ссылка
            И ((СвойстваТоваров.Свойство = &ВидТовара)
            И (СвойстваТоваров.Значение = "Телевизоры"))
            ИЛИ (СвойстваТоваров2.Свойство = &Цвета))
3 Cube
 
19.01.15
06:24
(2) Ой, не верно...
4 Помогите
 
19.01.15
06:24
(2) СвойстваТоваров.Значение будет Не только цвет
5 caxaf1
 
19.01.15
06:26
Выбери сначала из справочника "Номенклатура" с цветами по условию "телевизоры", а потом левым соединением сделать выборку из регистра.
6 Cube
 
19.01.15
06:26
У тебя запрос правильнее, чем у меня)) Оптимизировать тут, получается, нечего...
7 Cube
 
19.01.15
06:27
(5) Не факт, что это будет оптимальнее, т.к. такая таблица может получиться большой...
8 Помогите
 
19.01.15
06:30
(5) Соединить таблицу свойств саму с собой сначала?
ну да, большая таблица получится
9 alkorolev
 
19.01.15
06:30
СвойстваТоваров во временную таблицу, а затем ТоварыНаСкладах левосоединяй с ВТ_СвойстваТоваров
10 Помогите
 
19.01.15
06:30
(6) Ну ок. Спасибо
11 Помогите
 
19.01.15
06:31
(9) Зачем во временную?
12 VladZ
 
19.01.15
06:35
(11) Чтобы два раза Свойства "не теребить". Т.е. получили все свойства нужной номенклатуры, потом подтянули нужные свойства. Но это уже относится к разряду оптимизации по быстродействию, а не к вопросу упрощения.
13 Помогите
 
19.01.15
06:41
(12) А чем это будет быстрее чем выбирать свойства из постоянной таблицы? Временная таблица работает быстрее?

Получается нужно из постоянной выбрать один раз большой объем во временную, потом два раза выбрать из временной малые объемы, и это будет быстрее чем два раза выбрать малый объем из постоянной таблицы?
14 ADirks
 
19.01.15
07:04
(13) Не будет ничего быстрее. Добавятся никому не нужные операции с ВТ, только и всего.
Хочешь понять, что и как происходит, так бери profiler, лови текст запроса, который на сервер уходит, и потом смотри на план запроса. Не верь никогда слепо.
15 Помогите
 
19.01.15
07:12
(14) ок. спасибо
16 BluesHarp
 
19.01.15
07:24
(0) >>Выбираю остатки товаров по регистру остатков

Не увидел выбора остатков... Сначала доведи свой запрос до того, что бы он получал верный значения, а потом уже и оптимизацией займись.
17 Помогите
 
19.01.15
07:26
(16) Я настоящий запрос и не показывал. Он слишком большой.
18 BluesHarp
 
19.01.15
07:28
(17) В Твоем запросе остатков и нет и как ты предлагаешь оптимизировать запрос который ты не показал? 0_о
19 BluesHarp
 
19.01.15
07:29
(14) Типа никого не слушай и наступай на грабли самостоятельно. Прекрасная дорожка неэффективного программиста.
20 Помогите
 
19.01.15
07:33
(18) мне уже дали нужные ответы ADirks и Cube которые смогли понять мои вопросы правильно.
21 ADirks
 
19.01.15
07:36
(19) 1. я не сказал "никого не слушай", а "не верь слепо". Есть разница?
2. я не советовал наступать на грабли, а советовал анализировать происходящее. И дал название инструмента для анализа.
22 dk
 
19.01.15
07:43

ВЫБРАТЬ
    ТоварыНаСкладах.Количество,
    СвойстваТоваров.Значение
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&д1, Товар В (выбрать различные ссылка из Справочник.Номенклатура.ДополнительныеРеквизиты СвойстваТоваров где (СвойстваТоваров.Свойство = &ВидТовара) И (СвойстваТоваров.Значение = "Телевизоры"))) КАК ТоварыНаСкладахОстатки
Левое / Внутреннее соединение Справочник.Номенклатура.ДополнительныеРеквизиты КАК СвойстваТоваров2
        ПО ТоварыНаСкладах.Номенклатура = СвойстваТоваров2.Ссылка И (СвойстваТоваров2.Свойство = &Цвета)
23 Помогите
 
19.01.15
08:01
(22) Крутяк.
Все согласны что так более правильно?
24 Помогите
 
19.01.15
08:05
"выбрать различные " не замедлит запрос?
Там и так с вероятностью 99.99999% все ссылки различные будут.
25 dk
 
19.01.15
08:09
замедлит, если повторений почти нет, то лучше без различные
26 Помогите
 
19.01.15
08:33
Спасибо!
27 BluesHarp
 
19.01.15
09:49
(20) Суть в том, что если использовать таблицу движений регистра , то в (0) нормальный запрос. Но если там подразумевается таблица остатков, то в (0) потенциально не оптимальный запрос.
28 BluesHarp
 
19.01.15
09:50
(27) + вот про (22) и речь, что тут потенциально тормозной запрос.
29 Помогите
 
19.01.15
09:50
(27) Спасибо, КО! Но вопрос не про таблицу регистра, а про таблицу свойств номенклатуры.
30 BluesHarp
 
19.01.15
09:55
(29) А что с таблицей свойств, без соединений это просто плоская таблица. Проблемы обычно начинаются на соединениях.
31 Помогите
 
21.01.15
11:04
(30) Чтоб тебя забанили
32 Cube
 
22.01.15
05:48
(31) Исполнено. Заблокирован на год Волшебником.
У тебя осталось два желания =))
33 Помогите
 
24.01.15
17:15
Волшебник читает мысли и исполняет желания
34 Genayo
 
24.01.15
17:43
(32) Причина бана доставляет конечно...
35 ДенисЧ
 
24.01.15
17:44
(34) автор бана зеркалирует свои проблемы...
36 Лефмихалыч
 
24.01.15
17:50
(0) 1. сначала выбрать телевизоры в отдельную временную таблицу
2. Номенклатуру из п.1 засунуть в параметры виртуальной таблицы остатков
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой