Поиск:

Ответ в темуСоздание новой темы Создание опроса
> группы записей в таблице 
:(
    Опции темы
Гость_dasha
  Дата 18.8.2005, 15:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Добрый день всем. Нужна помощь с таблицей. В ней содержатся записи про клиентов. Так вот нужно найти группы записей с одинаковыми именами, а еще лучше, чтобы можно было указать, скажем, сколько символов может несовпадать. Можно такое автоматически реализовать? Вот такая задача smile . Буду рада, если кто-то поможет разобраться.
  Вверх
Bes
Дата 18.8.2005, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



на счет сколько символов, это надо подумать, а по именам дак это просто фильтр.
Код

select * from MyTab where KlientName like '%Сергей%'


Это сообщение отредактировал(а) Bes - 18.8.2005, 15:13
PM MAIL   Вверх
Гость_dasha
Дата 18.8.2005, 15:22 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Так в том то и дело, что заранее неизвестно, какие имена повторяются, а нужно найти все повторения и каждую группу имен как-то пронумеровать, например в отдельном поле.
  Вверх
Pakshin A. S.
Дата 18.8.2005, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А если вывести в DBGrid гуппированные записи при помощи GROUP BY и ручками все в них сделать...
PM   Вверх
Гость_dasha
Дата 18.8.2005, 15:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Боюсь, придется, только это времени немало займет. Там потом еще в каждой группе записей проверять значение другого поля, а записей там примерно 20 000. smile
  Вверх
bursa
Дата 18.8.2005, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Лучше сформировать новый справочник имен с полем name и id(автоинкримент)

Код

insert into new_table
(name)
(select name  from table
group by name)



Потом заполняем новое поле, которое пронумеровывает группы
Код

update table t set t.id_new=(select id from new_table n where n.name=t.name)


Ну и еще - посмотреть кол-во в группе
Код


select name, count(*) as c from table
group by name


PM MAIL   Вверх
Гость_dasha
Дата 18.8.2005, 15:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











bursa, спасибо, попробую.
  Вверх
Pakshin A. S.
Дата 18.8.2005, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А может еще конкретнее задачу описать? С примерами... Может еще что-то надумается...
PM   Вверх
Гость_dasha
Дата 18.8.2005, 16:08 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Конкретнее. Ну смысл в том, что таблица составляется из списков, составленных в разных филиалах (при этом разные люди могут одну фамилию немного по-разному написать). Там информация, кому сколько выдавали компенсаций. Но один человек не может два раза получить компенсацию на похороны даже с разных счетов, или два раза маленькую компенсацию с одного счета, только с разных. Короче, ищем нарушения. Смысл в том, чтобы найти всех повторяющихся и проверить, кто сколько получал.
Я делала вручную, обычными массивами и стринггридом, оно работает, но занимает сильно много ресурсов и времени при больших объемах данных, а в SQL я новичок.
  Вверх
Bes
Дата 19.8.2005, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



может проще штрафовать криворуких операторов?
И кстати, для такого дела (я подозреваю это разовая задача или скажем ежемесячная) можно пожертвовать всеми ресурсами и скажем целой ночью.
PM MAIL   Вверх
Гость_dasha
Дата 19.8.2005, 09:32 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











да нет, у компа просто не хватает памяти
Буду как-то выкручиваться, все равно надо учить SQL. smile
  Вверх
Bes
Дата 19.8.2005, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Думаю SQL тут вам врядли поможет, так вот даже в голову ничего не приходит сразу - это ведь больше статистика и отличия могут быть разные.
Хотя опишите поподробнее проблему: ведь насколько я понял человек не должен получить сумму два раза, но он ее и не поучи т.к. паспортные данные не те, а если они два раза одинаковые и он может по ним получить суму 2 раза, то нужно искать не различающиеся а совпадающие записи.... а это гораздо проще. Так?
PM MAIL   Вверх
Pakshin A. S.
Дата 19.8.2005, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Впринцепе и с паспортными данными может ошибка закрасться...

Был алгоритм распознавания, как FineReader буквочки со сканера... Может его можно прикрутить для установления "похожести", но все-равно будет достаточно долго работать и полного автоматизма не получить... smile
PM   Вверх
Bes
Дата 19.8.2005, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



закрасться то она может, только по этим данным потом сумму не получить....
PM MAIL   Вверх
Гость_dasha
Дата 19.8.2005, 11:18 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











2Bes: ну да, одинаковые, ведь ищем повторяющиеся фамилии.
Просто у одного человека может быть несколько счетов в одном филиале, или в разных. Он может получить компенсацию 50 по одному разу с каждого счета, а 150 или 500 один раз на человека.

2Pakshin A. S.: да ладно, буду брать только повторяющиеся фамилии.
  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


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

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

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


 




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


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

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