Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Найти наиболее часто встречающюся строку, в полях MEMO 
:(
    Опции темы
ilyuha
Дата 28.11.2007, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Народ, помогите плиз...
есть таблица с полем Climbers с ФИО людей. нужно вытянуть наиболее часто повторяющуюся строку этого поля в таблице. например:
1-ая запись -
Иванов
Петров
Сидоров
Филатов

2-ая:
Зайцев
Медведев
Филатов
Гришин

3-ия:
Иванов
Филатов
Громов
Степин

функция, в данном случае, должна возвращать через ADOQuery значение 'Филатов'


помогите плиз smile  два дня до сдачи :'(
PM MAIL   Вверх
Nimua
Дата 29.11.2007, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а можно подробнее структуру таблицы?
у тебя в поле просто список эл-тов?
PM MAIL   Вверх
pavelv
Дата 2.12.2007, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Я так понял, что поле одно. Видимо структура таблицы не была продумана д ля решения подобного вида задачь. Из вариантов двойной цикл. Внешний по всем именам текущей колонки, внутренний по всем именам внутренних колонок. Записывать все в массив, скорее всего динамический. Что выудить различные имена из одной колонки нужно искать в строке символ #13 или (эм подскажите забыл smile ). И соот-но то, что между двумя такими символами и будет находится на разные строках. Проще решения не вижу, хотя возможно оно есть

P.S> В понедельник на работе смогу посмотреть код второго символа, если нужно будет.

PM MAIL   Вверх
Данкинг
Дата 2.12.2007, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Не понял, а Memo при чём? Да, действитетельно пример неудачный, но я бы сделал так: собрал все слова (разделённые пробелом) в один массив, а второму массиву, проходя циклом по первому, присваивал бы число повторений соответствующего слова... Как-то так, глубже сейчас думать не хочется.  smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
kobra
Дата 2.12.2007, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

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



можно создать временную таблицу (или даже луще постаяную) и загнав туда данные выудить запросом нужную.
PM MAIL   Вверх
Deniz
Дата 3.12.2007, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

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



Nimua, +1
ilyuha, покажи структуру БД, укажи тип и версию СУБД, опиши все подробно, в том числе и результат, и только потом будем думать.



--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
ilyuha
Дата 3.12.2007, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



корочь, структура:
поля -
ID  LabelAscention   Climbers   MountName   MountHeight   RegionMount Country BeginingDate FinishingDate AllDayOfAscention

types -
INT TEXT MEMO TEXT INT TEXT TEXT DATE DATE INT

типы приведенны соответственно полям.
каждая запись - одно восхождение. Climbers - группа альпинистов с адресами. каждый в новой строке. надо найти альпиниста  в бд совершившего наибольшее кол-во восхождений(естественно, группы могут быть разными).

юзаю ADO+Access
PM MAIL   Вверх
Deniz
Дата 4.12.2007, 07:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

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



ilyuha, структура БД не совсем правильная.
Цитата(ilyuha @  3.12.2007,  17:58 Найти цитируемый пост)
Climbers - группа альпинистов с адресами. каждый в новой строке.
Вот это большая проблема.
Нужно было отдельные таблицы делать, а не в одно поле MEMO пихать все.
Классическая связь много ко многим Восхождение <-> Альпинист.
Причем лучше начать прямо сейчас переделку БД, а то потом еще попросят всех альпинистов, которые живут рядом/в одном городе/на одной улице и т.д.

Добавлено через 5 минут и 28 секунд
Да, по обработке:
1. select * from ...
2. Создать дин. массив
3. пробежать по всем записям в запросе
4. для каждой записи
4.1. выдрать ФИО из MEMO
4.2. добавить 1 к ФИО в массиве или просто добавить в массив
5. сортировать массив по кол-ву по убыванию
6. вывести массив в нужный компонент


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
pavelv
Дата 6.12.2007, 06:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



ilyuha действительно лучше менять структуру. Думаю самое простое завести для альпинистов отдельную таблицу в кт будут поля: ФИО Альпиниста, Инфа о нем, Уникальный код его восхождения(связь с исходной таблицей, тоесть куда он лазил и когда.), Номер альпиниста по порядку в восхождении(чтобы их различать, можно и без него обойтись конечно). Вообще Deniz описал уже процесс кодирования, но для облегчения нект задач можно вот как вывернуться. На форму поместить невидимый компонент TDBMemo который с базой будет связан и когда будешь бежать по всем записям таблицы из этого Memo построчно извлекать все фамилии альпинистов. 
PM MAIL   Вверх
ilyuha
Дата 8.12.2007, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо всем огромное! smile
да, так действительно будет намного проще и правильнее. просто, это моя первая прога работы с БД вообще - не учел я этого при продумке структуры таблицы..
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0494 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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