Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2010, 11:58   #1
AK BULLETS
Пользователь
 
Регистрация: 18.03.2010
Сообщений: 88
Восклицание Может есть алгоритм проще? группировка значений

Вывожу результат запроса в excel таблицу. Запрос собирает данные из трёх таблиц по единому коду, причем количество записей из таблиц разное.
Пример вывода:

объект 1=====лопата=====гвоздь
объект 1=====лопата=====шуруп
объект 1=====лопата=====дюбель
объект 1=====ведро======гвоздь
объект 1=====ведро======шуруп
объект 1=====ведро======дюбель
объект 2......

Нужно, чтобы в excel таблице значения не дублировались, т.е.

объект 1=====лопата=====гвоздь
============ведро=====шуруп
=====================дюбель

Кроме как после вывода в excel начинать обработку строк excel таблицы в голову ничего не приходит: типа построчно удалить повторные значения объекта 1 в 1 колонке, потом удалить у объекта 1 повторные лопаты и вёдра, потом удалить у объекта 1 повторные гвозди, шурупы и дюбеля, потом удалить все пустые строки и поднять всё по порядку вверх.

Подскажите, может кто сталкивался с такой портянкой и есть алгоритм попроще.

Последний раз редактировалось AK BULLETS; 20.04.2010 в 12:00.
AK BULLETS вне форума Ответить с цитированием
Старый 20.04.2010, 13:17   #2
AK BULLETS
Пользователь
 
Регистрация: 18.03.2010
Сообщений: 88
По умолчанию

Неужели нет никаких мыслей?
AK BULLETS вне форума Ответить с цитированием
Старый 20.04.2010, 13:51   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Скажи зачем тебе именно так нужно?
Поподробнее задачу распиши, может мысли у кого и появятся
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.04.2010, 14:09   #4
AK BULLETS
Пользователь
 
Регистрация: 18.03.2010
Сообщений: 88
По умолчанию

Ну вроде в примере всё описал.
Нужно убрать дублирующую информацию в таблице.
Что тут конкретнее?
Результат запроса:

Столбец1===Столбец2===Стоблец3
------------------------------------
объект 1=====лопата=====гвоздь
объект 1=====лопата=====шуруп
объект 1=====лопата=====дюбель
объект 1=====ведро======гвоздь
объект 1=====ведро======шуруп
объект 1=====ведро======дюбель


Нужно, чтобы было:

Столбец1===Столбец2===Стоблец3
-------------------------------------
объект 1=====лопата=====гвоздь
============ведро=====шуруп
======================дюбель

- это уже в excele

Последний раз редактировалось AK BULLETS; 20.04.2010 в 14:18.
AK BULLETS вне форума Ответить с цитированием
Старый 20.04.2010, 14:51   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну не знаю...
Если бы это База данных была там запрос написать и получай...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.04.2010, 15:25   #6
AK BULLETS
Пользователь
 
Регистрация: 18.03.2010
Сообщений: 88
По умолчанию

)) Так я это из базы данных и беру! )
SQL запросом из трёх таблиц БД выбираю данные. Результат - описан в примере. Потом эти данные закидываю в excel таблицу и нужно, чтобы в excel таблицы они были в виде 2.
Читаем 1-ой сообщение

Последний раз редактировалось AK BULLETS; 20.04.2010 в 15:29.
AK BULLETS вне форума Ответить с цитированием
Старый 20.04.2010, 16:04   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну так у тебя три таблицы сливаются, вот стало быть и нужно шаманить тот запрос который это делает.
Покажи если он не большой как запрос выглядит.
И как таблицы то связаны.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.04.2010, 16:24   #8
AK BULLETS
Пользователь
 
Регистрация: 18.03.2010
Сообщений: 88
По умолчанию

запрос огромный, потому приведу простой пример

SELECT имя_объекта, тип_оборудования, тип_инструмента from объекты, оборудование, инструменты WHERE объекты.ID=оборудование.ID_OBJ, объекты.ID=инструменты.ID_OBJ.

есть таблица "объекты" с уникальным кодом ID и каждая запись таблиц "оборудование" и "инструменты" привязана по ID_OBJ к объекту.

результат запроса:

объект 1=====лопата=====гвоздь
объект 1=====лопата=====шуруп
объект 1=====лопата=====дюбель
объект 1=====ведро======гвоздь
объект 1=====ведро======шуруп
объект 1=====ведро======дюбель
...

Последний раз редактировалось AK BULLETS; 20.04.2010 в 16:29.
AK BULLETS вне форума Ответить с цитированием
Старый 20.04.2010, 16:56   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Нет... так непонятно...
Я бы опробовал такие вещи делать группировкой главной таблицы с JOIN'ом второстепенной. И описал бы это именно в том огромном запросе.
Но для этого нужно знать структуру таблиц.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.04.2010, 17:08   #10
AK BULLETS
Пользователь
 
Регистрация: 18.03.2010
Сообщений: 88
По умолчанию

Вот реальный запрос. База на access.

SELECT OBJ.NAME, ISP_DOC.NOMER, ISP_DOC.DATA, MONITORING_PIR.UTV_ZAD_N, MONITORING_PIR.UTV_ZAD_DATA
FROM (OBJ LEFT JOIN ISP_DOC ON OBJ.ID = ISP_DOC.ID_OBJ) LEFT JOIN MONITORING_PIR ON OBJ.ID = MONITORING_PIR.ID_OBJ;

Отображает имя объекта, номер и дату документа, номер и дату задания.
ID_OBJ - ключ для связи записей с таблицей OBJ в таблицах ISP_DOC и MONITORING_PIR.

Результат запроса:
имя1=====номер док1======дата док1=====номер зад1=====дата зад1
имя1=====номер док1======дата док1=====номер зад2=====дата зад2
имя1=====номер док1======дата док1=====номер зад3=====дата зад3
имя1=====номер док2======дата док2=====номер зад1=====дата зад1
имя1=====номер док2======дата док2=====номер зад2=====дата зад2
имя1=====номер док2======дата док2=====номер зад3=====дата зад3
имя2=====номер док3======дата док3=====номер зад1=====дата зад1
имя2=====номер док3======дата док3=====номер зад2=====дата зад2

Далее вывожу результат запроса в excel и хочу, чтобы по завершению процедуры в excelе было

колонка1===колонка2======колонка3== ====колонка4======колонка5
--------------------------------------------------------------------------
имя1=====номер док1======дата док1=====номер зад1=====дата зад1
=========номер док2======дата док2=====номер зад2=====дата зад2
=================================== =номер зад3=====дата зад3
имя2=====номер док3======дата док3=====номер зад1=====дата зад1
=================================== =номер зад2=====дата зад2

Последний раз редактировалось AK BULLETS; 20.04.2010 в 17:16.
AK BULLETS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм Кнута-Морриса-Пратта или Рабина-Карпа (язык С++). Может у кого-нибудь есть готовый рабочий ? Беата Помощь студентам 7 27.03.2010 10:50
Каким может быть алгоритм Wa_sja Общие вопросы по программированию, компьютерный форум 5 28.02.2010 20:43
Группировка значений для анализа xamillion Microsoft Office Excel 33 25.05.2009 08:57
Алгоритм поиска значений в памяти. Ivan_32 Win Api 2 07.11.2008 19:59