![]() |
|
v7: Подскажите быстрый алгоритм... | ☑ | ||
---|---|---|---|---|
0
mg-samara
09.11.11
✎
15:25
|
Нужно "свернуть" ТЗ, но без потери значащих колонок.
ТЗ изначальная Колонка 1 Колонка 2 Колонка 3 Сумма значение1 значение2 значение3 10 значение2 значение2 значение3 20 значение1 значение3 значение3 30 значение4 значение3 значение3 30 сворачиаемм по второй и первой колонке После "свертки" Колонка 1 Колонка 2 Колонка 3 Сумма значение1,значение2 значение2 значение3 30 значение1,значение4 значение2 значение3 60 Идея - свернуть по двум колонкам - и из полученного ТЗ сформировать ключ для поиска. Затем используя ключ искать нужные строки и формировать колонку1. На больших объемах долго работать будет. Может кто поделится идеей как сделать побыстрее. |
|||
1
filh
09.11.11
✎
15:27
|
Индексированая таблица тебя спасет
|
|||
2
1Сергей
09.11.11
✎
15:27
|
(0) Если по колонке 3 будут разные значения в разных строках при равных первых двух колонок. Какое должно приниматься значение?
|
|||
3
Ёпрст
гуру
09.11.11
✎
15:27
|
ИндексированнаяТ ТЗ и привет из 1cpp
Бегай по любому индексц и привет, даже сворачивать не надо |
|||
4
Сияющий Асинхраль
09.11.11
✎
15:29
|
Ничего не понял, нарисуй в цифрах, что хочешь...
|
|||
5
1Сергей
09.11.11
✎
15:36
|
(4) я тоже не понял как он в первую колонку собирается по 2 значения запихивать
|
|||
6
filh
09.11.11
✎
15:37
|
(5) главное, ТС, знает!
|
|||
7
ado
09.11.11
✎
15:39
|
Всё не читал, про индексированную таблицу уже говорили? :-)
|
|||
8
mg-samara
09.11.11
✎
15:44
|
(5) Для упрощения скажу - Колонка 1 - текстовая
"значение1,значение2" - Текст. |
|||
9
mg-samara
09.11.11
✎
15:46
|
(7) Про индексированную таблицу понятно. Но в конце концов узкое место будет - банальный поиск. по индексированной ТЗ.
|
|||
10
mg-samara
09.11.11
✎
15:47
|
к (9)
понятно, что поиск будет не тупым перебором. :-) |
|||
11
ado
09.11.11
✎
15:47
|
(9) Поиск индексу -- он быстрый.
|
|||
12
ado
09.11.11
✎
15:48
|
А вообще, странная какая-то свертка ...
|
|||
13
mg-samara
09.11.11
✎
15:49
|
Спасибо всем откликнувшимся, ответы в принципе те, что я и сам ожидал.
|
|||
14
mg-samara
09.11.11
✎
15:50
|
(12) Неисповедимы запросы пользователей. :-)
|
|||
15
mg-samara
09.11.11
✎
15:51
|
(12) Отчет один извращенный планируется. :-)
|
|||
16
Сияющий Асинхраль
09.11.11
✎
15:53
|
Загадочный товарищ, вместо того чтобы рассказать чего же он хочет на самом деле, поговорил сам с собой и ушел...
|
|||
17
orefkov
09.11.11
✎
15:54
|
Выгрузить в таблицу sqlite, и
select Колонка2, Колонка3, sum(Сумма), group_concat(Колонка1) from tab group by Колонка2, Колонка3 |
|||
18
ado
09.11.11
✎
15:56
|
(17) О, блин, а я и не знал про такую агрегатную функцию, как group_concat.
|
|||
19
mg-samara
09.11.11
✎
16:00
|
(17) Во!!! Сразу понял то, что нужно!
Мне действительно можно использовать и SQL!!! |
|||
20
mg-samara
09.11.11
✎
16:00
|
(16) А ты так и не понял задачу?
|
|||
21
Ёпрст
гуру
09.11.11
✎
16:00
|
(17) врят ли именно это ему нужно, нафига ему значения группировки в строках ?
|
|||
22
mg-samara
09.11.11
✎
16:01
|
(21) Именно это и нужно.
Попробую заставить поработать за меня SQL. |
|||
23
mg-samara
09.11.11
✎
16:02
|
(17) Спасибо за отличную идею!
|
|||
24
Ёпрст
гуру
09.11.11
✎
16:02
|
(22) сомневаюсь, ибо потом, как ты искать будешь по значению в такой колонке ?
|
|||
25
Ёпрст
гуру
09.11.11
✎
16:03
|
у тебя в табличке, значения каких типов ? Строки ?
|
|||
26
mg-samara
09.11.11
✎
16:04
|
(25) Я понимю, то, что я спрашиваю - необычно.. :-)
Мне не нужно искать там ничего. |
|||
27
mg-samara
09.11.11
✎
16:08
|
(25) Ага, будут строки... :-)
|
|||
28
Ёпрст
гуру
09.11.11
✎
16:08
|
(26) ладно, значения каких типов у тебя ?
group_concat подойдет для строк\чисел\дат разве что, если че. |
|||
29
mg-samara
09.11.11
✎
16:09
|
Я таким образом формирую форму отчета для вывода на экран.
Просто данных много - долго формируется. Хочу оптимизировать. |
|||
30
mg-samara
09.11.11
✎
16:10
|
(28) Да, именно это и нужно.
|
|||
31
orefkov
09.11.11
✎
16:16
|
(18)
group_concat есть только в sqlite. За это и любим :) |
|||
32
Сияющий Асинхраль
09.11.11
✎
16:18
|
Тогда проще добавить одну колонку "ГруппСумма" в обе ТЗ, во второй ТЗ присвоить этой колонке, скажем 1 и объединить ТЗ1 и ТЗ2. После этого достаточно сортировать полученную ТЗ и один раз по ней пробежаться без всякого поиска...
|
|||
33
ado
09.11.11
✎
16:24
|
(28) Только для строк.
(31) Неа. Люди говорят, в MySQL тоже есть ;-) |
|||
34
Ёпрст
гуру
09.11.11
✎
16:29
|
(33) если че, все агрегатные типы в 1с - строки :)
|
|||
35
orefkov
09.11.11
✎
16:30
|
(33)
Все может быть, откуда-то ведь она должна была в sqlite появиться. Я-то просто имел ввиду ходовые под семеркой базы - sql, foxpro, sqlite. |
|||
36
mg-samara
09.11.11
✎
16:46
|
(32) Новая идея.. Только я не совсем понял. Туплю что-то. :-(
Можно поподробнее на примере? |
|||
37
Mikeware
09.11.11
✎
16:48
|
(36) Пользуй индексированнуюТаблицу и не парь мозг людям.
|
|||
38
ado
09.11.11
✎
16:55
|
(37) Да ну, (17) красивше.
|
|||
39
Mikeware
09.11.11
✎
17:02
|
(38) "...если б только б не б одно бы..."©
|
|||
40
mg-samara
09.11.11
✎
17:05
|
(37) А никто и не парит.
Мне уже интересно теоретически что тут (32) придумано |
|||
41
mg-samara
09.11.11
✎
17:07
|
(39) Решений два - индексированная таблица и SQL.
А тут (32) что-то новое. Понятно что будет не так оптимально, но интересно. |
|||
42
Mikeware
09.11.11
✎
17:07
|
(40) индекс он строит... и группирует по нему. Только "средствами 1с"
|
|||
43
Mikeware
09.11.11
✎
17:08
|
(41)Решение, собственно, одно. реализаций - несколько.
|
|||
44
mg-samara
09.11.11
✎
17:16
|
(42) А я и не понял из его описания...
Ну индекс - это уже пройденный этап. :-( |
|||
45
Сияющий Асинхраль
09.11.11
✎
18:49
|
Нет в (32) индекса, просто я в тз1 добавляю сумму по итогам из тз2, и чтобы не путать эти строки со старыми строками помечаю строки итогов единицей, после чего достаточно сделать правильную сортировку тз1
|
|||
46
Mikeware
09.11.11
✎
18:51
|
(45) Ну вот эта "правильная сортировка" суть индекс. а "сумма по итогам" суть группировка. Смысл один и тот же.
|
|||
47
Сияющий Асинхраль
09.11.11
✎
18:56
|
(46) Ну, если так рассуждать, то можно сказать и так. Но работает этот алгоритм, кстати, вполне даже ничего - тз на триста тысяч строк обрабатывает за вполне терпимые промежутки времени, причем без внешних компонент...
|
|||
48
Mikeware
09.11.11
✎
18:58
|
(47) А чем тебе внешние компоненты не угодили-то?. Как-то не парюсь..
|
|||
49
Сияющий Асинхраль
09.11.11
✎
19:00
|
А не люблю я таскать базы с внешними компонентами от клиентов - для себя да, а клиентам стараюсь не ставить...
|
|||
50
Mikeware
09.11.11
✎
19:01
|
(49) Ну, у меня нет "клиентов" :-)))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |