Вход | Регистрация



Свернуть ТЗ и оставить лучшие записи

Свернуть ТЗ и оставить лучшие записи
Я
   Maniac
 
16.11.18 - 12:07
Есть ТЗ

Колонка1 Колонка2 Колонка3 Колонка4

Нужно свернуть по минимальной К4 и полям К1 и К2.
Но чтобы в итоговой также осталась К3, которая соответствовала К1 К2 и К4 в исходной.

Одним запросом. Как?
 
 
   ChMikle
 
1 - 16.11.18 - 12:08
автор , вы точно успешный АдинЭснег ????
   Бубка Гоп
 
2 - 16.11.18 - 12:08
(0) яннп
   Maniac
 
3 - 16.11.18 - 12:09
(1) это как то решает задачу?)
   Вафель
 
4 - 16.11.18 - 12:09
отсортируй и лишнее удали
   ChMikle
 
5 - 16.11.18 - 12:09
(3) просто столько разговоров про супер-пупер мегапрайс , и тут на тебе как тз свернуть
   Maniac
 
6 - 16.11.18 - 12:10
4) ну это выборка.
А как без доп выборки. Хочу запросом получить итоговую таблицу.
   Maniac
 
7 - 16.11.18 - 12:10
(5) ту просто не врубился в тему.
   Галахад
 
8 - 16.11.18 - 12:10
(0) Постановка задачи не верная.
По логике второе условие выполняется всегда.
   catena
 
9 - 16.11.18 - 12:11
Что значит "Одним запросом"? Сгруппировать, соединить с исходной для вытаскивания К3.
   exwill
 
10 - 16.11.18 - 12:11
(0) Свернуть, потом соединить, какие проблемы?
 
 Рекламное место пустует
   ptiz
 
11 - 16.11.18 - 12:12
(0) Надо позвать программиста.
   Maniac
 
12 - 16.11.18 - 12:12
Запрос сворачивает по указанным полям. 1 и 2.
К3 при этом приходится удалять из запроса. Так как тогда не получится лучшая К4.

А нужно чтобы в итоге К3 попала та которая соответствовала К4.

К3 строка - К4 число.

Если оставить все поля и свернуть по К4 - ниуха не свернется.
   Maniac
 
13 - 16.11.18 - 12:12
(10) ну только так.... думал как то проще можно.
   Maniac
 
14 - 16.11.18 - 12:13
Ок так значит так.
   Вафель
 
15 - 16.11.18 - 12:14
Проще чем (4) не может быть
   Вафель
 
16 - 16.11.18 - 12:14
+ на сервер БД ничего не передавать
   ptiz
 
17 - 16.11.18 - 12:16
ВЫБРАТЬ
    ТЗ.К1,
    ТЗ.К2,
    МАКСИМУМ(ТЗ.К3) КАК К3,
    ТЗ.К4
ИЗ
    ТЗ КАК ТЗ
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ТЗ.К1 КАК К1,
            ТЗ.К2 КАК К2,
            МИНИМУМ(ТЗ.К4) КАК К4
        ИЗ
            ТЗ КАК ТЗ
        
        СГРУППИРОВАТЬ ПО
            ТЗ.К1,
            ТЗ.К2) КАК МинК4
        ПО ТЗ.К1 = МинК41
            И ТЗ.К2 = МинК42
            И ТЗ.К4 = МинК44

СГРУППИРОВАТЬ ПО
    ТЗ.К1,
    ТЗ.К2,
    ТЗ.К4
   Maniac
 
18 - 16.11.18 - 12:16
Не красиво. запросом как то гламурнее
   exwill
 
19 - 16.11.18 - 12:17
(13) Ну можно еще одним циклом. Но это уже не запросом.
   exwill
 
20 - 16.11.18 - 12:19
(18) И гламурнее и лишний раз напоминает: "да, я могу писать запросы".
   Ёпрст
 
21 - 16.11.18 - 12:20
(18) и дольше по времени выполнения
   Вафель
 
22 - 16.11.18 - 12:21
(18) тебе шашечки или чтобы ехало?
   exwill
 
23 - 16.11.18 - 12:24
(21) (22) Просто вы ничего не понимаете в гламуре.
"Даааа, я могу писаать запрооосы. А циклы не могу. У меня от них голова болит."
   Maniac
 
24 - 16.11.18 - 12:25
(21) не дольше. если колонок намного больше и сложнее все.
Плюс еще какие то данные из 1С прибавляются.
   Maniac
 
25 - 16.11.18 - 12:25
Для примитива проще может и по тз пробегать.
   exwill
 
26 - 16.11.18 - 12:36
(24) Есть простое правило: чем все сложнее, тем с большей вероятностью будет проще не использовать запрос.
   Maniac
 
27 - 16.11.18 - 12:37
(26) 1С учит что единственное правильное решение - всегда использовать запрос.
   exwill
 
28 - 16.11.18 - 12:45
(27) То, подмножество языка запросов SQL, которое реализовано в платформе, не является полным по Тьюрингу. Или, говоря по-простому, 1С-овскими запросами нельзя вычислить абсолютно все. В сложных случаях вы будете сперва тратить время на то, чтобы выяснить: а вычислима ли ваша функция 1С-овским запросом (а это сама по себе не тривиальная задача), а затем все равно писать циклы. Не надо все вот так сразу за чистую монету принимать.
   Maniac
 
29 - 16.11.18 - 12:47
Ну тут простая вещь описана. да очень плохо что через одно место в запросах приходится выполнять.
   Maniac
 
30 - 16.11.18 - 12:54
но и сортировка очень фиговая вещь в 1с. одна из худших
   Maniac
 
31 - 16.11.18 - 12:55
и опять таки придется тз выгружать. чистить. бежать. еще неизвестно что тут хуже из всего
   exwill
 
32 - 16.11.18 - 12:58
(30) Можно и без сортировки, одним проходом.
   Maniac
 
33 - 16.11.18 - 12:59
(32) одинаковые 1 и 2 раз бросаны по всей тз
 
 
   ptiz
 
34 - 16.11.18 - 12:59
(27) "всегда использовать запрос" - ерунда полная.
Ты же 2+2 запросом не делаешь.
   МимохожийОднако
 
35 - 16.11.18 - 13:01
(1) ОФФ: Он, возможно, продал свой ник или сдал в аренду ))
Или взломали?
Я тоже удивлен его последними темами
   exwill
 
36 - 16.11.18 - 13:03
(33) Ну и что? Запоминай в массив и дальше беги.
   Вафель
 
37 - 16.11.18 - 13:03
(32) как без сортировки и без найти?
   exwill
 
38 - 16.11.18 - 13:04
(37) Без найти - я не говорил.
   Вафель
 
39 - 16.11.18 - 13:05
хотя если вспомогательную таблицу юзать, то можно.
   exwill
 
40 - 16.11.18 - 13:07
(39) Зачем вспомогательную? Вспомогательная не нужна. Есть исходная и резултирующая.
   Maniac
 
41 - 16.11.18 - 13:10
(40) исходная - ТЧ объекта.

Ее приделся в любом случае выгружать для обработки.
Очищать.
Временную сортировать.
Потом снова заполнять.

Где тут плюсы?
Найти вместо сортировки? да нунах!!!
еще хуже.

Потом в цикле бегать еще сравнивать строки между собой - тоже.

Короче не смешите тапочки. Тут запрос.
   ptiz
 
42 - 16.11.18 - 13:17
(41) Поиск в ТЗ с индексированными колоноками - почти мгновенный.
   Maniac
 
43 - 16.11.18 - 13:33
Вернемся к запросу...
нифига не хочет сворачивать!!!


ТектЗапроса = 
    "ВЫБРАТЬ
    |    ТаблицаНоменклатуры.Артикул КАК Артикул,
    |    ТаблицаНоменклатуры.Производитель КАК Производитель,
    |    ТаблицаНоменклатуры.Партнер КАК Партнер,
    |    ТаблицаНоменклатуры.ЦенаПоставщика КАК ЦенаПоставщика,
    |    ТаблицаНоменклатуры.ЦенаПродажи КАК ЦенаПродажи,
    |    ТаблицаНоменклатуры.ОстаткиПоставщика КАК ОстаткиПоставщика
    |ПОМЕСТИТЬ ТаблицаНоменклатуры
    |ИЗ
    |    &ТаблицаНоменклатуры КАК ТаблицаНоменклатуры
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    ИтоговаяТаблица.Артикул КАК Артикул,
    |    ИтоговаяТаблица.Производитель КАК Производитель,
    |    ИтоговаяТаблица.ЦенаПродажи КАК ЦенаПродажи,
    |    ТаблицаНоменклатуры.Партнер КАК Партнер,
    |    ТаблицаНоменклатуры.ЦенаПоставщика КАК ЦенаПоставщика,
    |    ТаблицаНоменклатуры.ОстаткиПоставщика КАК ОстаткиПоставщика
    |ИЗ
    |    (ВЫБРАТЬ
    |        СвернутаяТаблица.Артикул КАК Артикул,
    |        СвернутаяТаблица.Производитель КАК Производитель,
    |        МИНИМУМ(СвернутаяТаблица.ЦенаПродажи) КАК ЦенаПродажи
    |    ИЗ
    |        ТаблицаНоменклатуры КАК СвернутаяТаблица
    |    
    |    СГРУППИРОВАТЬ ПО
    |        СвернутаяТаблица.Артикул,
    |        СвернутаяТаблица.Производитель) КАК ИтоговаяТаблица
    |        ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаНоменклатуры КАК ТаблицаНоменклатуры
    |        ПО ИтоговаяТаблица.Артикул = ТаблицаНоменклатуры.Артикул
    |            И ИтоговаяТаблица.Производитель = ТаблицаНоменклатуры.Производитель
    |
    |УПОРЯДОЧИТЬ ПО
    |    Артикул";
   ptiz
 
44 - 16.11.18 - 13:35
(43) А соединение по ЦенаПродажи где?
   Maniac
 
45 - 16.11.18 - 13:36
Не только не сворачивает. Но и тупо ставит минимальную цену по всем строкам
   Maniac
 
46 - 16.11.18 - 13:37
(44) емае.
   Ёпрст
 
47 - 16.11.18 - 13:38
и нет группировки в общем запросе
   SeiOkami
 
48 - 16.11.18 - 13:45
ВЫБРАТЬ
    ТЗ.К1 КАК К1,
    ТЗ.К2 КАК К2,
    ТЗ.К3 КАК К3,
    ТЗ.К4 КАК К4
ПОМЕСТИТЬ ВТ
ИЗ
    ТЗ КАК ТЗ
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    Минимум.К1 КАК К1,
    Минимум.К2 КАК К2,
    ВТ.К3 КАК К3,
    Минимум.К4 КАК К4
ИЗ
    (ВЫБРАТЬ
        ВТ.К1 КАК К1,
        ВТ.К2 КАК К2,
        МИНИМУМ(ВТ.К4) КАК К4
    ИЗ
        ВТ КАК ВТ
    
    СГРУППИРОВАТЬ ПО
        ВТ.К1,
        ВТ.К2) КАК Минимум
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ КАК ВТ
        ПО Минимум.К1 = ВТ.К1
            И Минимум.К2 = ВТ.К2
            И Минимум.К4 = ВТ.К4
   Maniac
 
49 - 16.11.18 - 13:47
Она не нужна.
Есть сортировка в конце. этого достаточно.
Вроде работает
 
 Рекламное место пустует
   Maniac
 
50 - 16.11.18 - 14:04
Индексацию только добавил сразу во временную
   Maniac
 
51 - 16.11.18 - 14:04
20к строк за секунду выхлопнуло и загрузило снова.
   Maniac
 
52 - 16.11.18 - 14:05
10к.
   aleks_default
 
53 - 16.11.18 - 14:18
Вот это каминаут!
   АгентБезопаснойНацио
 
54 - 16.11.18 - 14:35
маня открывает для себя запросы..
   GANR
 
55 - 16.11.18 - 15:03
(0) А можешь привести табличку с несколькими строчками до и после свертки в качестве примера? Чтоб форумчане могли проверить правильный запрос у них или нет.
   Maniac
 
56 - 16.11.18 - 15:04
Тема закрыта. Вопрос решен.

(43) (44) и (50). решение вопроса.
   Вафель
 
57 - 16.11.18 - 15:19
(56) циклы не осилил?
   Maniac
 
58 - 16.11.18 - 15:21
(57) продолжай работать циклами.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует