|
удаление строк таблицы значений | ☑ | ||
---|---|---|---|---|
0
Пес1с
26.10.14
✎
22:49
|
Есть 2 тз, в каждой физлицо и сумма. Как удалить строки из первой тз, которые есть во второй тз?
|
|||
1
raykom
26.10.14
✎
23:00
|
Строки по какому признаку идентифицируешь ?
|
|||
2
Фокусник
26.10.14
✎
23:05
|
(0) перебор 1ой ТЗ с конца, поиск по физлицу во второй ТЗ, если найдено, то удалять строку в первой ТЗ
|
|||
3
Пес1с
26.10.14
✎
23:08
|
только перебор?
|
|||
4
Torquader
26.10.14
✎
23:08
|
Перебираем меньшую таблицу.
Если это т1, то как сказал (3) с конца, а если т2, то можно и сначала. Также не мешало бы сделать индексы по полям, по которым идёт сравнение. |
|||
5
Torquader
26.10.14
✎
23:11
|
(3) Можно загрузить обе таблицы в одну, добавив колонку, в которую для первой поставить +1, а для второй -1, тогда потом можно "свернуть" и удалить строки с нулём.
Кстати, интересный вопрос - если в первой таблице две одинаковых строки, а во второй такая одна, то удаляем две или одну ? |
|||
6
Фокусник
26.10.14
✎
23:13
|
(3) сколько миллионов строк в этих ТЗ? :)
|
|||
7
Пес1с
26.10.14
✎
23:14
|
двух одинаковых строк там нет, так что можно не париться)
|
|||
8
Torquader
26.10.14
✎
23:14
|
Не, ну можно и запросом выбрать из первой то, чего нет во втором, только вот будет ли это быстрее перебора - ещё тот вопрос.
|
|||
9
FlashC
26.10.14
✎
23:15
|
(0) откуда тз формируете? может, логичнее было бы задать вопрос как получить тз с таким то условием. не клюшки же)
|
|||
10
Torquader
26.10.14
✎
23:15
|
Левое соединение и условие на Null
|
|||
11
raykom
26.10.14
✎
23:19
|
+(5) объединяем в одну таблицу, добавлям оинаковый признак, колонку число, единичку, на пример.
И сворачиваем все это дело Табл.Свернуть("ФИО, Сума","Кол"); Для лл=1 По Табл.КоличествоСтрок() Цикл кол=Табл.ПолучитьЗначение(лл,"Кол"); Если кол>1 Тогда \\УДаляем строку КонецЦикла; |
|||
12
raykom
26.10.14
✎
23:25
|
+(11)Только это для клюшек было )))
|
|||
13
raykom
26.10.14
✎
23:25
|
Ну без разницы. Работать будет, а вот уж по скорости - хз.
|
|||
14
Torquader
26.10.14
✎
23:26
|
(13) По скорости лучше вообще не получать таблицу, из которой нужно что-то удалить, а удалять сразу из запроса, её формирующего.
|
|||
15
Sorm
26.10.14
✎
23:28
|
(13) Вопрос в количестве строк. Если хотим переложить на DB сервер - все во временные таблицы, проиндексировать, левое соединение, взять строки, где Null справа, очистить первую таблицу, загрузить из результата запроса.
|
|||
16
raykom
26.10.14
✎
23:30
|
(14)Ну так оно. Но это уже не три строки. Да и понимания надо больше, чем для (13)
|
|||
17
Пес1с
27.10.14
✎
01:20
|
Всем спасибо, сделал через запрос)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |