Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Последовательная склейка, Подскажите как быстро реализовать 
:(
    Опции темы
78125
  Дата 3.2.2003, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 20.1.2003
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Что имеется
Имеется БД Access в которой есть следующие поля
МАРКАСТАЛИ, ЦЕНА, КОЛВОНАСКЛАДЕ, ДЛИНА

Что требуется
Если несколко строк имеют одинаковые параметры МАРКАСТАЛИ, ЦЕНА, ДЛИНА то необходимо оставить только одну в которой будет сумма КОЛВОНАСКЛАДЕ всех строк.

Как реализовывал я

СПОСОБ1
Проиндексировал поля, при этом по моему мнению строки с повторяющимися поллями стоят рядом
После последовательное сравнения ближайших двух строк, если совпали дну удалить, в предыдущую записать сумму масс.

Недостаток
После индексации не всегда одинаковые строки стоят рядом.

СПОСОБ2
Последовательный перебор

Недостаток
Медленно, на 2000 записей уходит 8-10 минут

СПОСОБ3
Пробовал применять фильтр, в отфильтровнном дивпазоне удаляем все строки, кроме одной, в которую пишем сумму масс.

Недостаток
Фильтр работает только с инедексированными полями, причем поля типа МАРКАСТАЛИ не признает по поводу языка и берет только первую букву М??

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

--------------------
купим подпись
PM MAIL   Вверх
Alex101
Дата 3.2.2003, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 891
Регистрация: 8.4.2002
Где: Москва

Репутация: 2
Всего: 10



Через SQL запрос... Ежели на ходу говорить, то выбираешь все записи, в которых марка стали равна марке в первой записи, затем считаешь сумму, после этого надо удалить такие записи... Не, так плохо.
В общем, структура данных плохая, должна быть еще одна таблица, содержащая марки стали, причем каждая запись должна быть уникальной, тогда вся работа сведется к подсчету суммы в первой таблице записей, отобранных по марке стали из второй таблицы.


--------------------
С уважением, А. Фролов.
PM MAIL ICQ   Вверх
78125
Дата 6.2.2003, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 20.1.2003
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Ну что блин и идей больше нет?
--------------------
купим подпись
PM MAIL   Вверх
acp
Дата 6.2.2003, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 4.2.2003
Где: Владимир

Репутация: нет
Всего: 2



Это ведь какая-то программа в которую вводят данные и т.п.? Надо сделать послдовательный перебор, но 1 раз. А потом при пользовательском вводе проверять его данные.
PM WWW ICQ   Вверх
78125
Дата 6.2.2003, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 20.1.2003
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Цитата(acp @ 6.2.2003, 17:20)
Это ведь какая-то программа в которую вводят данные и т.п.? Надо сделать послдовательный перебор, но 1 раз. А потом при пользовательском вводе проверять его данные.

никакая это не программа
есть два mdb файла
дак вот в файле 1 сидит инфа с повторениями и тд
а необходимо в файл 2 перенести без них вот и все

те сначала программа по опр параметрам переносит 1 таблицу
и рассовывает ее по нескольким разным таблицам в файле 2 (и делает некоторые другие преобразования но это не важно) а уж после смотрит таблицы в базе 2 и ищет повторения

confused.gif
--------------------
купим подпись
PM MAIL   Вверх
acp
Дата 6.2.2003, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 4.2.2003
Где: Владимир

Репутация: нет
Всего: 2



Т.е. критичен параметр - скорость поиска? Если не критичен, то применяй вышеуказаный способ (перебор). Если критичен, то всё равно применяй вышеуказанный способ, т.к. другого нет.

PS: и почему так важна скорость? Если это надо сделать всего 1 раз?
PM WWW ICQ   Вверх
78125
Дата 6.2.2003, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 20.1.2003
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Цитата(acp @ 6.2.2003, 17:57)
PS: и почему так важна скорость? Если это надо сделать всего 1 раз?

нет нет сию операцию над файлами надо производить несколько раз в день и скорость имеет значение thumbs-up.gif
--------------------
купим подпись
PM MAIL   Вверх
acp
Дата 6.2.2003, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 4.2.2003
Где: Владимир

Репутация: нет
Всего: 2



Могу предложить использовать "мультиключ" (не знаю как эта штука называется по правильному). Суть в чём - ключ представляет собой не какое-то значение - уникальный идентификатор, а представляет собой уникальный идентиф. основанный на существующих записях. Т.е. примерно это означает, что ключ = МАРКАСТАЛИ + ЦЕНА + ДЛИНА. Естественно в строковом представлении, или можно было беы реализовать более оптимально введением доп. таблиц с идентификаторами марок. Если в аццесе такое (мультиключ) не поддерживается ( что очень вероятно), то его можно эмулировать путём дорбавления дополнительного поля и сведением в это поле всех твоих данных.
Так вот, к чему я веду, при индексации по такому ключу, одинаковые записи будут находиться рядом...

PS: почему эта тема не в форуме "БД"?

Это сообщение отредактировал(а) acp - 6.2.2003, 23:10
PM WWW ICQ   Вверх
78125
Дата 6.2.2003, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 20.1.2003
Где: Санкт-Петербург

Репутация: нет
Всего: нет



"мультиключ"

Звучит красиво - попробую.
--------------------
купим подпись
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0664 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.