|
удаление дублей из таблицы | ☑ | ||
---|---|---|---|---|
0
LivingStar
20.08.14
✎
13:03
|
На форме есть таблица, в ней в разных местах возможны дубли, по 5 ти полям, нужно оставить большее числовое значений из дублей, строку с меньшим числовым значением удалить, как лучше это сделать?
|
|||
1
Dmitriy_76
20.08.14
✎
13:04
|
скопировать таблицу...добавить колонку..колво вхождений ... и свернуть по требуемым полям.
|
|||
2
Бешеная Нога
20.08.14
✎
13:04
|
в запросе
|
|||
3
Crush
20.08.14
✎
13:07
|
установитьпараметр "тз", таблица
Максимум(поле1-5) таблица = выполнить выгрузить создать колонки |
|||
4
LivingStar
20.08.14
✎
13:11
|
так норм будет?
Процедура УбратьДубли() Отбор = Новый Структура(); Для каждого Стр Из Таблица Цикл Отбор.Вставить("City", Стр.City); Отбор.Вставить("Meet", Стр.Meet); Отбор.Вставить("City2", Стр.City2); Отбор.Вставить("Toward", Стр.Toward); Отбор.Вставить("Auto", Стр.Auto); Строки = Таблица.НайтиСтроки(Отбор); Если Строки.Количество() > 1 Тогда Таблица.Удалить(Строки[1]); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
5
Dmitriy_76
20.08.14
✎
13:20
|
(4) нет. при удалении будет прыгать... да и задача в (0) вроде немного другая не ?
|
|||
6
Crush
20.08.14
✎
13:25
|
(4) ЖЕСТЬ!
|
|||
7
Crush
20.08.14
✎
13:26
|
Дата регистрации: 31 марта 2005; Стаж: 9 лет 4 месяца 20 дней
Кому то подарили аккаунт программиста с 10 летним стажем |
|||
8
Любопытная
20.08.14
✎
13:27
|
(7) Не, он всегда такой
|
|||
9
palpetrovich
20.08.14
✎
13:27
|
(7) та не, он всегда таким был :)
|
|||
10
vicof
20.08.14
✎
13:30
|
каким ты был, таким ты и остался,
орел степной, казак лихой... |
|||
11
LivingStar
20.08.14
✎
13:40
|
все работает что в (4)
|
|||
12
LivingStar
20.08.14
✎
13:41
|
(5) куда прыгать? мне главное избавиться от этих лишних строк, что выходит в (4)
|
|||
13
Godofsin
20.08.14
✎
13:42
|
(11) unfucking believeble
|
|||
14
vyaz
20.08.14
✎
13:42
|
(11) Ну это просто праздник какой-то, что работает. Ура товарищи!
|
|||
15
LivingStar
20.08.14
✎
13:43
|
(13) в чем не исправимая проблема (4)?
|
|||
16
Godofsin
20.08.14
✎
13:43
|
как понимать эту строку: "...оставить большее числовое значений из дублей"? Дай пример таблицы
|
|||
17
LivingStar
20.08.14
✎
13:46
|
(16) да главное что бы дублей не было
Процедура УбратьДубли() Отбор = Новый Структура(); Для каждого Стр Из Таблица Цикл Отбор.Вставить("City", Стр.City); Отбор.Вставить("Meet", Стр.Meet); Отбор.Вставить("City2", Стр.City2); Отбор.Вставить("Toward", Стр.Toward); Отбор.Вставить("Auto", Стр.Auto); Строки = Таблица.НайтиСтроки(Отбор); Если Строки.Количество() > 1 Тогда УдаляемаяСтрока = ?(Число(СтрЗаменить(Сред(Строки[0].Price,1,СтрДлина(Строки[0].Price)-2)," ",""))>= Число(СтрЗаменить(Сред(Строки[1].Price,1,СтрДлина(Строки[1].Price)-2)," ","")), Строки[1], Строки[0]); Таблица.Удалить(УдаляемаяСтрока); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
18
Godofsin
20.08.14
✎
13:46
|
(15) Я так понимаю, там есть 6 колонка, где какое-то значение присутствует числовое. По-твоему алгоритму ты ничего не сравниваешь и удаляешь всегда вторую строчку из массива, при том даже несмотря сколько их там. А если строка без дублей?
|
|||
19
miliko
20.08.14
✎
13:48
|
(0) сколько строк должно остаться ?
|
|||
20
LivingStar
20.08.14
✎
13:49
|
(18) в (17) сравниваю
|
|||
21
Godofsin
20.08.14
✎
13:49
|
(17) а если одна строка? а если 3?
|
|||
22
LivingStar
20.08.14
✎
13:50
|
(19) там много строк, более 2000, главное убрать дубли, я ещё оставляю большее значение цены
|
|||
23
LivingStar
20.08.14
✎
13:50
|
трогаю если только больше 1, и на сколько вижу что 3х одинаковых нет, только дубли, если так то в (17) должно работать
|
|||
24
Любопытная
20.08.14
✎
13:52
|
(18) У него всегда две строки (дубли же, дубль это два, всем известно) ;) На больше 1 он проверяет, тут вроде понятно.
(23) Не стоит удалять строки в цикле, в котором таблицу перебираешь. Таблица будет меняться, фигня получиться может. Ну и страшный алгоритм который получает значение УдаляемаяСтрока мне вообще непонятен) |
|||
25
Godofsin
20.08.14
✎
13:53
|
(23) Так не делают, дружище. Запихай в запрос таблицу и выбери строки по максимуму числового значения
|
|||
26
miliko
20.08.14
✎
13:54
|
(22) если 5 полей по 5 дублям, то должно остаться 5 строк с 5 дублями, а если дубли равны то может быть больше
|
|||
27
palpetrovich
20.08.14
✎
13:55
|
(0) лови http://rghost.ru/57568560
надеюсь разберешься ;) |
|||
28
LivingStar
20.08.14
✎
13:58
|
(27) антивирус не пропускает((((
(25) согласен, это я попытался так |
|||
29
LivingStar
20.08.14
✎
13:59
|
(27) зачем менеджер загрузки качать? кидали бы так файлом куда либо, есть же свободные файлообменники
|
|||
30
palpetrovich
20.08.14
✎
14:01
|
(28) ты не ту кнопку тыканешь ...черную надо, вверху слева :)
|
|||
31
LivingStar
20.08.14
✎
14:04
|
(30) скачал спасибо! посмотрю
|
|||
32
Crush
20.08.14
✎
14:18
|
(29) Всем улыбок и хорошего настроения!:)
|
|||
33
Crush
20.08.14
✎
14:23
|
За то что заставил улыбнуться дарю текст запроса. Установи свою таблицу как параметр, и результат выгрузи в эту же таблицу.
тз.City, тз.Meet, тз.City2, тз.Toward, тз.Auto, тз.Price поместить тз из &тз как тз; Выбрать тз.City, тз.Meet, тз.City2, тз.Toward, тз.Auto, Максимум(тз.Price) Как Price из тз Сгруппировать по тз.City, тз.Meet, тз.City2, тз.Toward, тз.Auto |
|||
34
Crush
20.08.14
✎
14:24
|
+(33) в начале пропустил слово Выбрать
|
|||
35
LivingStar
20.08.14
✎
14:25
|
(33) спасибо!
|
|||
36
Timon1405
20.08.14
✎
14:26
|
вангую ошибку "Тип не может быть выбран в запросе"
|
|||
37
palpetrovich
20.08.14
✎
14:29
|
(36) в (27) нормально :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |