|
Свернуть ТЗ и оставить лучшие записи | ☑ | ||
---|---|---|---|---|
0
Maniac
16.11.18
✎
12:07
|
Есть ТЗ
Колонка1 Колонка2 Колонка3 Колонка4 Нужно свернуть по минимальной К4 и полям К1 и К2. Но чтобы в итоговой также осталась К3, которая соответствовала К1 К2 и К4 в исходной. Одним запросом. Как? |
|||
1
ChMikle
16.11.18
✎
12:08
|
автор , вы точно успешный АдинЭснег ????
|
|||
2
Бубка Гоп
16.11.18
✎
12:08
|
(0) яннп
|
|||
3
Maniac
16.11.18
✎
12:09
|
(1) это как то решает задачу?)
|
|||
4
Вафель
16.11.18
✎
12:09
|
отсортируй и лишнее удали
|
|||
5
ChMikle
16.11.18
✎
12:09
|
(3) просто столько разговоров про супер-пупер мегапрайс , и тут на тебе как тз свернуть
|
|||
6
Maniac
16.11.18
✎
12:10
|
4) ну это выборка.
А как без доп выборки. Хочу запросом получить итоговую таблицу. |
|||
7
Maniac
16.11.18
✎
12:10
|
(5) ту просто не врубился в тему.
|
|||
8
Галахад
гуру
16.11.18
✎
12:10
|
(0) Постановка задачи не верная.
По логике второе условие выполняется всегда. |
|||
9
catena
16.11.18
✎
12:11
|
Что значит "Одним запросом"? Сгруппировать, соединить с исходной для вытаскивания К3.
|
|||
10
exwill
16.11.18
✎
12:11
|
(0) Свернуть, потом соединить, какие проблемы?
|
|||
11
ptiz
16.11.18
✎
12:12
|
(0) Надо позвать программиста.
|
|||
12
Maniac
16.11.18
✎
12:12
|
Запрос сворачивает по указанным полям. 1 и 2.
К3 при этом приходится удалять из запроса. Так как тогда не получится лучшая К4. А нужно чтобы в итоге К3 попала та которая соответствовала К4. К3 строка - К4 число. Если оставить все поля и свернуть по К4 - ниуха не свернется. |
|||
13
Maniac
16.11.18
✎
12:12
|
(10) ну только так.... думал как то проще можно.
|
|||
14
Maniac
16.11.18
✎
12:13
|
Ок так значит так.
|
|||
15
Вафель
16.11.18
✎
12:14
|
Проще чем (4) не может быть
|
|||
16
Вафель
16.11.18
✎
12:14
|
+ на сервер БД ничего не передавать
|
|||
17
ptiz
16.11.18
✎
12:16
|
ВЫБРАТЬ
ТЗ.К1, ТЗ.К2, МАКСИМУМ(ТЗ.К3) КАК К3, ТЗ.К4 ИЗ ТЗ КАК ТЗ ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ТЗ.К1 КАК К1, ТЗ.К2 КАК К2, МИНИМУМ(ТЗ.К4) КАК К4 ИЗ ТЗ КАК ТЗ СГРУППИРОВАТЬ ПО ТЗ.К1, ТЗ.К2) КАК МинК4 ПО ТЗ.К1 = МинК4.К1 И ТЗ.К2 = МинК4.К2 И ТЗ.К4 = МинК4.К4 СГРУППИРОВАТЬ ПО ТЗ.К1, ТЗ.К2, ТЗ.К4 |
|||
18
Maniac
16.11.18
✎
12:16
|
Не красиво. запросом как то гламурнее
|
|||
19
exwill
16.11.18
✎
12:17
|
(13) Ну можно еще одним циклом. Но это уже не запросом.
|
|||
20
exwill
16.11.18
✎
12:19
|
(18) И гламурнее и лишний раз напоминает: "да, я могу писать запросы".
|
|||
21
Ёпрст
16.11.18
✎
12:20
|
(18) и дольше по времени выполнения
|
|||
22
Вафель
16.11.18
✎
12:21
|
(18) тебе шашечки или чтобы ехало?
|
|||
23
exwill
16.11.18
✎
12:24
|
(21) (22) Просто вы ничего не понимаете в гламуре.
"Даааа, я могу писаать запрооосы. А циклы не могу. У меня от них голова болит." |
|||
24
Maniac
16.11.18
✎
12:25
|
(21) не дольше. если колонок намного больше и сложнее все.
Плюс еще какие то данные из 1С прибавляются. |
|||
25
Maniac
16.11.18
✎
12:25
|
Для примитива проще может и по тз пробегать.
|
|||
26
exwill
16.11.18
✎
12:36
|
(24) Есть простое правило: чем все сложнее, тем с большей вероятностью будет проще не использовать запрос.
|
|||
27
Maniac
16.11.18
✎
12:37
|
(26) 1С учит что единственное правильное решение - всегда использовать запрос.
|
|||
28
exwill
16.11.18
✎
12:45
|
(27) То, подмножество языка запросов SQL, которое реализовано в платформе, не является полным по Тьюрингу. Или, говоря по-простому, 1С-овскими запросами нельзя вычислить абсолютно все. В сложных случаях вы будете сперва тратить время на то, чтобы выяснить: а вычислима ли ваша функция 1С-овским запросом (а это сама по себе не тривиальная задача), а затем все равно писать циклы. Не надо все вот так сразу за чистую монету принимать.
|
|||
29
Maniac
16.11.18
✎
12:47
|
Ну тут простая вещь описана. да очень плохо что через одно место в запросах приходится выполнять.
|
|||
30
Maniac
16.11.18
✎
12:54
|
но и сортировка очень фиговая вещь в 1с. одна из худших
|
|||
31
Maniac
16.11.18
✎
12:55
|
и опять таки придется тз выгружать. чистить. бежать. еще неизвестно что тут хуже из всего
|
|||
32
exwill
16.11.18
✎
12:58
|
(30) Можно и без сортировки, одним проходом.
|
|||
33
Maniac
16.11.18
✎
12:59
|
(32) одинаковые 1 и 2 раз бросаны по всей тз
|
|||
34
ptiz
16.11.18
✎
12:59
|
(27) "всегда использовать запрос" - ерунда полная.
Ты же 2+2 запросом не делаешь. |
|||
35
Мимохожий Однако
16.11.18
✎
13:01
|
(1) ОФФ: Он, возможно, продал свой ник или сдал в аренду ))
Или взломали? Я тоже удивлен его последними темами |
|||
36
exwill
16.11.18
✎
13:03
|
(33) Ну и что? Запоминай в массив и дальше беги.
|
|||
37
Вафель
16.11.18
✎
13:03
|
(32) как без сортировки и без найти?
|
|||
38
exwill
16.11.18
✎
13:04
|
(37) Без найти - я не говорил.
|
|||
39
Вафель
16.11.18
✎
13:05
|
хотя если вспомогательную таблицу юзать, то можно.
|
|||
40
exwill
16.11.18
✎
13:07
|
(39) Зачем вспомогательную? Вспомогательная не нужна. Есть исходная и резултирующая.
|
|||
41
Maniac
16.11.18
✎
13:10
|
(40) исходная - ТЧ объекта.
Ее приделся в любом случае выгружать для обработки. Очищать. Временную сортировать. Потом снова заполнять. Где тут плюсы? Найти вместо сортировки? да нунах!!! еще хуже. Потом в цикле бегать еще сравнивать строки между собой - тоже. Короче не смешите тапочки. Тут запрос. |
|||
42
ptiz
16.11.18
✎
13:17
|
(41) Поиск в ТЗ с индексированными колоноками - почти мгновенный.
|
|||
43
Maniac
16.11.18
✎
13:33
|
Вернемся к запросу...
нифига не хочет сворачивать!!! ТектЗапроса = "ВЫБРАТЬ | ТаблицаНоменклатуры.Артикул КАК Артикул, | ТаблицаНоменклатуры.Производитель КАК Производитель, | ТаблицаНоменклатуры.Партнер КАК Партнер, | ТаблицаНоменклатуры.ЦенаПоставщика КАК ЦенаПоставщика, | ТаблицаНоменклатуры.ЦенаПродажи КАК ЦенаПродажи, | ТаблицаНоменклатуры.ОстаткиПоставщика КАК ОстаткиПоставщика |ПОМЕСТИТЬ ТаблицаНоменклатуры |ИЗ | &ТаблицаНоменклатуры КАК ТаблицаНоменклатуры |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ИтоговаяТаблица.Артикул КАК Артикул, | ИтоговаяТаблица.Производитель КАК Производитель, | ИтоговаяТаблица.ЦенаПродажи КАК ЦенаПродажи, | ТаблицаНоменклатуры.Партнер КАК Партнер, | ТаблицаНоменклатуры.ЦенаПоставщика КАК ЦенаПоставщика, | ТаблицаНоменклатуры.ОстаткиПоставщика КАК ОстаткиПоставщика |ИЗ | (ВЫБРАТЬ | СвернутаяТаблица.Артикул КАК Артикул, | СвернутаяТаблица.Производитель КАК Производитель, | МИНИМУМ(СвернутаяТаблица.ЦенаПродажи) КАК ЦенаПродажи | ИЗ | ТаблицаНоменклатуры КАК СвернутаяТаблица | | СГРУППИРОВАТЬ ПО | СвернутаяТаблица.Артикул, | СвернутаяТаблица.Производитель) КАК ИтоговаяТаблица | ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаНоменклатуры КАК ТаблицаНоменклатуры | ПО ИтоговаяТаблица.Артикул = ТаблицаНоменклатуры.Артикул | И ИтоговаяТаблица.Производитель = ТаблицаНоменклатуры.Производитель | |УПОРЯДОЧИТЬ ПО | Артикул"; |
|||
44
ptiz
16.11.18
✎
13:35
|
(43) А соединение по ЦенаПродажи где?
|
|||
45
Maniac
16.11.18
✎
13:36
|
Не только не сворачивает. Но и тупо ставит минимальную цену по всем строкам
|
|||
46
Maniac
16.11.18
✎
13:37
|
(44) емае.
|
|||
47
Ёпрст
16.11.18
✎
13:38
|
и нет группировки в общем запросе
|
|||
48
SeiOkami
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 |
|||
49
Maniac
16.11.18
✎
13:47
|
Она не нужна.
Есть сортировка в конце. этого достаточно. Вроде работает |
|||
50
Maniac
16.11.18
✎
14:04
|
Индексацию только добавил сразу во временную
|
|||
51
Maniac
16.11.18
✎
14:04
|
20к строк за секунду выхлопнуло и загрузило снова.
|
|||
52
Maniac
16.11.18
✎
14:05
|
10к.
|
|||
53
aleks_default
16.11.18
✎
14:18
|
Вот это каминаут!
|
|||
54
АгентБезопасной Нацио
16.11.18
✎
14:35
|
маня открывает для себя запросы..
|
|||
55
GANR
16.11.18
✎
15:03
|
(0) А можешь привести табличку с несколькими строчками до и после свертки в качестве примера? Чтоб форумчане могли проверить правильный запрос у них или нет.
|
|||
56
Maniac
16.11.18
✎
15:04
|
Тема закрыта. Вопрос решен.
(43) (44) и (50). решение вопроса. |
|||
57
Вафель
16.11.18
✎
15:19
|
(56) циклы не осилил?
|
|||
58
Maniac
16.11.18
✎
15:21
|
(57) продолжай работать циклами.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |