![]() |
|
Модераторы: Akella |
![]()
|
|
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
Даже и не знаю, как правильно тему было назвать.
Есть в таблице поле числовое, в котором хранится что-то типа 1 1 1 2 3 3 3 4 4 1 как бы отсортировать в таком порядке: 1 2 3 4 1 2 3 4 1 2 3 4 1 2 1 2 1 т.е. как бы выхватывая из таблицы записи в таком специальном порядке: Вот в чём проблема: разные агентства дают в редакцию газеты файлы объявлений. Это всё заливается в базу данных. Но при экспорте в текстовый файл общей информации нужно выводить объявления таким способом: одно объявление первого агентства, одно второго агентства, одно третьего, потом опять одно первого агентства, одно второго и т.д. ну в таблице просто хранятся ссылки на id другой таблицы-справочника, связь через внешний ключ.
Это сообщение отредактировал(а) Akella - 29.11.2007, 20:55 |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
всё храниться в treklama
Добавлено через 3 минуты и 34 секунды я думаю, что тут нужно делать экспорт через дельфи в текст в разные файлы, потом поочереди из каждого файла заливать выдёргивая по одной записи из каждого файла в другую временную таблицу, из которой уже и формировать окончательный результат |
|||
|
||||
| Deniz |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
Akella, можно добавить в таблицу поле "№ объявления" и вести его по каждому агенству.
Есть некоторые ограничения, если нужно указывать период по датам, тогда можно реализовать через временную таблицу, что-то вроде
код писал без проверки, поэтому ... проверяй. после выборки клиент посылает запрос
можно попробовать без временной, но это надо думать -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
||||
|
|||||
| VOS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 31.1.2007 Репутация: нет Всего: 8 |
Можно попробовать создать таблицу TEMP_ID из одного столбца ID_MAX_RECL (для ускорения можно еще и ID_AGENT)
потом в цикле по агентствам выбирать для каждого максимальный ID_RECL для агентства, если ID_RECL not in (select ID_MAX_RECL from TEMP_ID where ID_AGENT=:ID_AGENT)) ну и добавлять этот ID_RECL в TEMP_ID после выборки естественно перед циком delete from ID_MAX_RECL (т.к. я не знаю поддерживает ли сейчас FireBird временные таблицы как MS SQL) Это сообщение отредактировал(а) VOS - 30.11.2007, 11:06 |
|||
|
||||
| VOS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 31.1.2007 Репутация: нет Всего: 8 |
Похоже не поддерживает.
Тогда во временную таблицу придется еще и идентификатор сессии втыкать, как в примере от Deniz - ident = gen_id(..., 1); а потом delete from ... where ident=:ident |
|||
|
||||
| tishaishii |
|
||||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: нет Всего: 8 |
Временная таблица не нужна.
Нужно добавить в существующую поле ID_ORD. И выполнить:
Таким образом, массив отсортировали по коду агентства и записям каждого агентства присвоили число от 0 до ... Если при просмотре очередной записи, код агентства не совпадает с предыдущим кодом, то обнуляем счётчик и продолжаем нумеровать. Потом можно выполнить простую выборку:
Это сообщение отредактировал(а) tishaishii - 30.11.2007, 18:32 |
||||
|
|||||
| tishaishii |
|
||||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: нет Всего: 8 |
Описание таблицы и процедуры предварительного упорядочивания.
Окончательная выборка.
|
||||
|
|||||
| Akella |
|
||||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
Всем ответившим большое спасибо!!! Но..... есть процедура, кусок которой я упомянул в первом сообщении, которую не получиться сильно изменить, т.к. алгоритм строг.
Добавлено @ 23:27 я очень заинтересовавшимся могу базу отправить процедура должна выбирать записи в определённом порядке: вот объявления в газете как выводятся?
Добавлено @ 23:31 сейчас сначала идут объявления одного агентства, потом второго, потом третьего, так не справедливо вроде вот то, что храниться в таблице ![]() вот то, как выводит процедура ![]() на этом рисунке неправильно, должно быть от каждого агентства поочереди по одному оъявлению пока не знаю как решить 6( Добавлено через 10 минут и 34 секунды
типа по справедливости Это сообщение отредактировал(а) Akella - 30.11.2007, 23:31 |
||||||
|
|||||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
Говоря про временную таблицу имелось ввиду как раз дополнительная таблица, только я предлагал добавить в нее еще идентификатор выборки. Akella, хочу помочь, но, честно говоря, лень читать все и разбираться. Свое видение я рассказал, возможно будут какие-то дополнения. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
всем спасибо, буду разбираться
|
|||
|
||||
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: нет Всего: 8 |
Ну ни кто не говорил про многих пользователей. Кроме того, я понял, что дело касается вёрстки газеты, а это, скорее всего, делает 1 человек и не часто. Это сообщение отредактировал(а) tishaishii - 4.12.2007, 15:20 |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
||||
|
||||
| Deniz |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
OFF:
Не помню как точно звучала фраза, но ...
Со своей стороны скажу, что всегда пытаюсь заложить возможность одновременной работы нескольких клиентов, тем более что в данном случае дополнения незначительные. У всех свои решения, возможно в некоторых случаях можно и одного клиента, но там уже другие мероприятия по блокированию остальных... что лучше каждый выбирает для себя сам. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
||||
|
|||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
Я не сказал о том, что будет работать один пользователь!
|
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
пока сделал так
т.е. добавил поле ID2, где хранятся неуникальные ID, т.е. получается что-то вроде такого ID общявления, ID агентства, ID объявления агентства в конце сделал сортировку по этому полю, не совсем пока то, что хотелось, за то: минимум изменений структуры базы и нет изменений в исполняемом файле |
|||
|
||||
![]()
|
| Правила форума "Interbase" | |
|
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |