Имя: Пароль:
1C
1С v8
запрос с группировкой и условием
0 virdim
 
13.12.18
16:15
Привествую всех! Нуб в запросах, поэтому обращаюсь к гуру. Какой лучший способ сгруппировать таблицу запросом. Имеем следующую таблицу

  Товар |магазин |Тип цен|подразделение
1.товар1|магазин1|тц1    |пс
2.товар2|магазин1|тц1    |пс
3.товар2|магазин1|тц2    |подразделение1

Как сгруппировать 2 и 3 строки чтобы осталось только та строка, у которой подразделение не пустая ссылка?
1 Ненавижу 1С
 
гуру
13.12.18
16:16
группировать не надо, надо:

ГДЕ Подразделение<>&ПустаяСсылка
2 Дмитрий
 
13.12.18
16:17
так сгруппировать или отобрать строки с непустым подразделением?
3 mikecool
 
13.12.18
16:17
сгруппировать по
Имеющие количество(Товар) = 1 Или количество(Товар)>1 и Не Максимум(подразделение1 ) = Значение(Пустаяссылка)
4 virdim
 
13.12.18
16:31
(1) Тогда условие уберет строку 1
(2) Сгруппировать, т.е. наличие подразделение как бы имеет больший приоритет в одинаковых строках
(3) Эм, а разьве так будет работать? Оно же не сгруппируется чтобы услови в имеющиеся отработало? количество(Товар) всегда будет 1.
5 dka80
 
13.12.18
16:40
Выбрать
Товар,Магазин,Подразделение,Количество
Из Источник
Сгруппировать
Максимум(Подразделение),
Сумма(Количество)
По
Товар, Магазин
6 virdim
 
13.12.18
16:44
(5) ты наверное перепутал сгруппировать с итогами и у меня нет количества
7 Alexandr_U1982
 
13.12.18
16:46
ВЫБРАТЬ
    Источник.Товар КАК Товар,
    Источник.Магазин КАК Магазин,
    МАКСИМУМ(Источник.Подразделение) КАК Подразделение
ИЗ
    Источник КАК Источник
    
СГРУППИРОВАТЬ ПО
    Источник.Товар,
    Источник.Магазин
8 dezss
 
13.12.18
16:47
Лучше группировать и максимум по подразделению, но тип цен исключить
9 virdim
 
13.12.18
16:55
(7) А тип цен куда? А кстати, если сделать максимум(типцен) в дополнении к максимум(подразделение) будет правильно работать? На моем примере работает, но я не уверен что это правильно. (8) А как его потом подцепить?
10 Alexandr_U1982
 
13.12.18
16:59
(9)Если сделать максимум(типцен) то не будет правильно работать. ТипЦен нужно подцепить левым соединением.
11 dezss
 
13.12.18
17:00
(9) Да даже максимум по подразделению не всегда будет корректно работать, нужно уточнять условия.
Если есть 2 разных подразделения, но с одинаковыми остальными полями, они должны остаться?
12 Alexandr_U1982
 
13.12.18
17:01
ВЫБРАТЬ
    Источник.Товар КАК Товар,
    Источник.Магазин КАК Магазин,
    МАКСИМУМ(Источник.Подразделение) КАК Подразделение
ПОМЕСТИТЬ ВТДанные
ИЗ
    Источник КАК Источник
    
СГРУППИРОВАТЬ ПО
    Источник.Товар,
    Источник.Магазин
;

////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТДанные.Товар КАК Товар,
    ВТДанные.Магазин КАК Магазин,
    ВТДанные.Подразделение КАК Подразделение,
    Источник.ТипЦен
ИЗ
    ВТДанные КАК ВТДанные
        ЛЕВОЕ СОЕДИНЕНИЕ Источник КАК Источник
        ПО ВТДанные.Товар = Источник.Товар
            И ВТДанные.Магазин = Источник.Магазин
            И ВТДанные.Подразделение = Источник.Подразделение
13 virdim
 
13.12.18
17:31
(11) По условиям 2 разных не должно быть, только либо есть, либо нет.
(12) Да, хороший вариант. Только я забыл ещё про одно условие: размер этой таблицы получается более чем 2кк строк и хотелось бы избежать помещения этой таблицы во временную.
14 xXeNoNx
 
13.12.18
19:14
(13) да не только это забыл..., структуру хранения данных не хочешь рассказать?
15 xXeNoNx
 
13.12.18
19:16
(12) количествоЗаписей = номенклатура * магазин * подразделение. Кошерно?
16 xXeNoNx
 
13.12.18
19:19
(15) предлагаю еще проиндексировать, шоб наверняка
17 Alexandr_U1982
 
13.12.18
19:57
(15) ХЗ, я не еврей
18 Alexandr_U1982
 
13.12.18
19:59
(16) Во-первых в (0) ничего не было сказано про 2 млн. записей.
Во-вторых, раз критикуешь, предложи свой вариант.
19 virdim
 
14.12.18
09:08
(14) Структура следующая
1. справочник номенклатура
2. справочник магазины, включает подразделение и ТЦ
3. Некая таблица в которой содержаться: Исходный ТЦ, Новый ТЦ и подразделение. В ней может быть строка с одинаковым Исходным ТЦ как подразделением так и без.

1 и 2 соединяюся полным соединением. Получается чуть больше 2млн. строк. К этой таблице левым таблица 3 соединяется по Исходному ТЦ и Подразделению.
20 Alexandr_U1982
 
14.12.18
10:15
(19)Напиши сюда запрос
21 Alexandr_U1982
 
14.12.18
10:30
(19)Помимо Исходного ТЦ, Нового ТЦ и Подразделения, что еще содержится в некой таблице? Откуда берется эта таблица?
22 virdim
 
14.12.18
12:25
(21) Нашёл решение. Разделил таблицу 3 из (19) на две таблицы, одна с пустым подразделением, другая нет. Далее сделал два левых соединений и выбрал естьnull(табСподразделениями.типЦен, табБезподразделениями.типЦен)
Программист всегда исправляет последнюю ошибку.