![]() |
|
![]() ![]() ![]() |
|
Гость_dasha |
|
|||
Unregistered |
Добрый день всем. Нужна помощь с таблицей. В ней содержатся записи про клиентов. Так вот нужно найти группы записей с одинаковыми именами, а еще лучше, чтобы можно было указать, скажем, сколько символов может несовпадать. Можно такое автоматически реализовать? Вот такая задача
![]() |
|||
|
||||
Bes |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
на счет сколько символов, это надо подумать, а по именам дак это просто фильтр.
Это сообщение отредактировал(а) Bes - 18.8.2005, 15:13 |
|||
|
||||
Гость_dasha |
|
|||
Unregistered |
Так в том то и дело, что заранее неизвестно, какие имена повторяются, а нужно найти все повторения и каждую группу имен как-то пронумеровать, например в отдельном поле.
|
|||
|
||||
Pakshin A. S. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 2 Всего: 61 |
А если вывести в DBGrid гуппированные записи при помощи GROUP BY и ручками все в них сделать...
|
|||
|
||||
Гость_dasha |
|
|||
Unregistered |
Боюсь, придется, только это времени немало займет. Там потом еще в каждой группе записей проверять значение другого поля, а записей там примерно 20 000.
![]() |
|||
|
||||
bursa |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 25.2.2005 Где: Липецк Репутация: 1 Всего: 1 |
Лучше сформировать новый справочник имен с полем name и id(автоинкримент)
Потом заполняем новое поле, которое пронумеровывает группы
Ну и еще - посмотреть кол-во в группе
|
||||||
|
|||||||
Гость_dasha |
|
|||
Unregistered |
bursa, спасибо, попробую.
|
|||
|
||||
Pakshin A. S. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 2 Всего: 61 |
А может еще конкретнее задачу описать? С примерами... Может еще что-то надумается...
|
|||
|
||||
Гость_dasha |
|
|||
Unregistered |
Конкретнее. Ну смысл в том, что таблица составляется из списков, составленных в разных филиалах (при этом разные люди могут одну фамилию немного по-разному написать). Там информация, кому сколько выдавали компенсаций. Но один человек не может два раза получить компенсацию на похороны даже с разных счетов, или два раза маленькую компенсацию с одного счета, только с разных. Короче, ищем нарушения. Смысл в том, чтобы найти всех повторяющихся и проверить, кто сколько получал.
Я делала вручную, обычными массивами и стринггридом, оно работает, но занимает сильно много ресурсов и времени при больших объемах данных, а в SQL я новичок. |
|||
|
||||
Bes |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
может проще штрафовать криворуких операторов?
И кстати, для такого дела (я подозреваю это разовая задача или скажем ежемесячная) можно пожертвовать всеми ресурсами и скажем целой ночью. |
|||
|
||||
Гость_dasha |
|
|||
Unregistered |
да нет, у компа просто не хватает памяти
Буду как-то выкручиваться, все равно надо учить SQL. ![]() |
|||
|
||||
Bes |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
Думаю SQL тут вам врядли поможет, так вот даже в голову ничего не приходит сразу - это ведь больше статистика и отличия могут быть разные.
Хотя опишите поподробнее проблему: ведь насколько я понял человек не должен получить сумму два раза, но он ее и не поучи т.к. паспортные данные не те, а если они два раза одинаковые и он может по ним получить суму 2 раза, то нужно искать не различающиеся а совпадающие записи.... а это гораздо проще. Так? |
|||
|
||||
Pakshin A. S. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 2 Всего: 61 |
Впринцепе и с паспортными данными может ошибка закрасться...
Был алгоритм распознавания, как FineReader буквочки со сканера... Может его можно прикрутить для установления "похожести", но все-равно будет достаточно долго работать и полного автоматизма не получить... ![]() |
|||
|
||||
Bes |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
закрасться то она может, только по этим данным потом сумму не получить....
|
|||
|
||||
Гость_dasha |
|
|||
Unregistered |
2Bes: ну да, одинаковые, ведь ищем повторяющиеся фамилии.
Просто у одного человека может быть несколько счетов в одном филиале, или в разных. Он может получить компенсацию 50 по одному разу с каждого счета, а 150 или 500 один раз на человека. 2Pakshin A. S.: да ладно, буду брать только повторяющиеся фамилии. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |