Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хитрая сортировка 
:(
    Опции темы
Akella
Дата 10.12.2008, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Видители в чём дело... вывод объявлений немного сложнее. По идее мой алгоритм работает идеально, если сортировать только по одному полю ID2. Но... сортировка при окончательном выводе немного другая, т.е. вначале онисортируются по другим полям:
sort_napr, sort_type, sort_razdel, sort_rubrika, sort_region, sort_vid

а вот полная сортировка
order by sort_napr, sort_type, sort_razdel, sort_rubrika, sort_region, sort_vid, id2

в процедуре вывода объявлений возможно косяк у меня  smile 
PM MAIL   Вверх
uranpro
Дата 10.12.2008, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



))) завел 60тыс записей...
программа обрабатывает 1000 за 45сек)))


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
Akella
Дата 10.12.2008, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Цитата(Deniz @  2.12.2008,  14:35 Найти цитируемый пост)
Надеюсь понятно объяснил.

я запутался в твои сообщениях  smile

Добавлено через 30 секунд
uranpro, время ничто (с) 5ый элемент

Добавлено через 1 минуту и 38 секунд
я жговорю, что у меня не 2 поля для сортировки, а фактически 7. И вот в окончательное 7ое с именем ID2 нужно записать правильные цифры

Добавлено через 2 минуты и 46 секунд
Цитата(uranpro @  10.12.2008,  13:59 Найти цитируемый пост)
))) завел 60тыс записей...
программа обрабатывает 1000 за 45сек))) 

Firebird 60 тысяч записей обрабатывает за 45 секунд, но это уже никакого отношения к делу не имеет
PM MAIL   Вверх
Akella
Дата 10.12.2008, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Сделал тестовую процедуру, которая показывает порядок сортировки:
Код

begin
for select
  r.sort_napr,
  r.sort_type,
  r.sort_razdel,
  r.sort_rubrika,
  r.sort_region,
  r.sort_vid,
  r.id2,
  r.sort_by_agency,
  a.name,
  r.id


from treklama r
  left join tagency a on (a.id = r.id_agency)
WHERE r.rec_to_export = 1
order by 1,2,3,4,5,6,7


into
  :p_sort_napr, :p_sort_type, :p_sort_razdel, :p_sort_rubrika, :p_sort_region, :p_sort_vid, :ID2, :p_sort_by_agency, :P_AGENCY, :id

do
  suspend;
end


вот результаты:

вначале всё идёт идеально, объявления разных РД выводятся поочереди
user posted image

красным обвёл те, которые выстроились подряд.... хотя такого быть не должно, ведь чуть ниже опять вывод нормализовался
user posted image

как всегда в коде какая-нибудь мелочь  smile 
PM MAIL   Вверх
Akella
Дата 10.12.2008, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



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

Добавлено @ 16:17
Deniz
Цитата(Deniz @  2.12.2008,  14:35 Найти цитируемый пост)
select name, count(*) 
from treklama 
where id_sort is null 
group by name
order by в нужном порядке


Переделал на
Код

select sort_by_agency, count(*)
from treklama 
where treklama.rec_to_export = 1
group by 1


Результат
SORT_BY_AGENCY    COUNT

SORT_BY_AGENCY    COUNT

1    161
2    305
3    29

я правильно иду?

Не доходит, зачем у тебя where id_sort is null и order by в нужном порядке

Это сообщение отредактировал(а) Akella - 10.12.2008, 16:27
PM MAIL   Вверх
Akella
Дата 10.12.2008, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Цитата(Deniz @  2.12.2008,  14:35 Найти цитируемый пост)
Далее, находим минимальное кол-во объяв (обозначим М) и кол-во записей в запросе ( Cnt )

переделав запрос на
Код

select sort_by_agency, count(*)
from treklama 
where treklama.rec_to_export = 1
group by 1
order by 2


узнаём, что первая запись в поле count содержит M, минимальное количество объяв.
А количество записей в запросе Cnt = 3
PM MAIL   Вверх
uranpro
Дата 10.12.2008, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Не доходит, зачем у тебя where id_sort is null и order by в нужном порядке

показывает тебе не отсортированные записи


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
Akella
Дата 10.12.2008, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



В поле id_sort (у меня оно называется ID2) нет пустых значений.
Принцип такой. Пользователь в таблице каким-либо способом указывает, какие объявления нужно публиковать. Эти объявления помечаются специальном поле.
PM MAIL   Вверх
Deniz
Дата 11.12.2008, 06:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Akella, что-бы нормально алгоритм дорисовать, нужно знать все условия и ограничения.
Например, пользователь определяет список объявлений, в поле id_sort или другое ставится определенный код.
Далее порядок сортировки ... и т.д.
Опиши, может алгоритм вообще другой нужен.

Добавлено через 3 минуты и 19 секунд
Код
select sort_by_agency, count(*)
from treklama 
where treklama.rec_to_export = 1
group by 1
тебе этот запрос надо отсортировать так, в каком порядке пойдут agency, а order by 2 делать не надо


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


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

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

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


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

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


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

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


 




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


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

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