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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2010, 08:53   #1
Алёна
Форумчанин
 
Аватар для Алёна
 
Регистрация: 11.03.2007
Сообщений: 149
Восклицание алгоритм

Подскажите каким алгоритмом лучше реализовать следующее:
есть таблица Календарь выхода газеты
01.01.2010 -№1
02.01.2010 -№2
...
30.01.2010 - №30

есть объявления с программированием выходов:
1-ком продам - с 01.01.2010 по 10.01.2010

надо сделать выгрузку объявлений в газету например на 2 января, это то понятно как сделать (делаем выборку между датами)
а если стоит условие программирование выходов через номер, как это реализовать наиболее негеморрным способом?
Если это глупо, но работает, значит это не глупо.
Алёна вне форума Ответить с цитированием
Старый 07.05.2010, 10:16   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,544
По умолчанию

определяем первый номер выхода
все остальные будут иметь туже четность (или четные или нечетные) как и первый номер
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 07.05.2010, 12:08   #3
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
определяем первый номер выхода
все остальные будут иметь туже четность (или четные или нечетные) как и первый номер
это будет чистое везение и магия чисел
просто в общем случае, не факт что газета выходит гарантированно каждый день
точнее так, интереснее научиться генерить последовательность чисел на любых наборах данных, из которых потом выбирать хоть через один, хоть через 3

2 Алёна
вы бы еще про субд написали бы

Последний раз редактировалось soleil@mmc; 07.05.2010 в 12:35.
soleil@mmc вне форума Ответить с цитированием
Старый 07.05.2010, 14:15   #4
Алёна
Форумчанин
 
Аватар для Алёна
 
Регистрация: 11.03.2007
Сообщений: 149
По умолчанию

Цитата:
Сообщение от soleil@mmc Посмотреть сообщение
2 Алёна
вы бы еще про субд написали бы
Акцесс юзаю...можно поставить кучу полей с датами выхода и типа пометкой+/- рядом, но это объем и тупо
Если это глупо, но работает, значит это не глупо.
Алёна вне форума Ответить с цитированием
Старый 07.05.2010, 14:34   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я ПОЛНОСТЬЮ согласен с evg_m!

Никакой магии!

Нужно определить первый НОМЕР журнала, в который попадает объявление (если есть таблица с датами выходов и номерами - это несложно), и дальше брать записи с чётностью номера первого номера, в которое попало данное объявление!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.05.2010, 15:21   #6
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Никакой магии!
а я вот останусь на своем
не люблю частных решений, особенно, когда заказчик успевает 100 раз поменять свое мнение
и привязка решения к данным не есть хорошо

просто выцепить номер вот из этого
Цитата:
№1
кажется простым, а каким образом он будет забит в реальности - никто ведь не знает - ТС не привела структуры таблиц и ключевых полей
soleil@mmc вне форума Ответить с цитированием
Старый 07.05.2010, 17:15   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
просто выцепить номер вот из этого
Цитата:
№1
кажется простым, а каким образом он будет забит в реальности - никто ведь не знает - ТС не привела структуры таблиц и ключевых полей
Коллега, но согласитесь, что можно просто добавить ещё одно поле (которое не давать на редактирование пользователям) - порядковый номер журнала, сделать это поле числовым, not null, уникальным, и наращивать триггером. и привязывать по чётности к нему...
Хотя, можно, конечно, порядковый номер получать и в запросе (хоть это и сложнее)...
Главное, что идея evg_m с совпадением остатка от деления на два - отличная! (и, кстати, если брать остаток от деления не на два, а на любое другое число, тогда легко можно получать периодичность, когда объявление должно попасть в каждый третий (четвёртый, пятый и т.д. N-й выпуск...)

Последний раз редактировалось Serge_Bliznykov; 07.05.2010 в 17:17.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.05.2010, 17:38   #8
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

остаток от деления это и ежу понятно
просто нехорошо будет когда в продакшене от привязки к данным у вас посыпятся алгоритмы на авехах
простой пример: постоянный заказчик проплачивает объявы круглогодичные, но начал он свой год где-нибудь в апреле, т.е. имеем запись в объявах за период 15 апреля 2009 - 15 апреля 2010. админу базы 31 января 2010г. дают задачу почистить табличку с номерами прошлогодних выпусков и после этого по вашему алгоритму не получится найти первый номер из последовательности "15 апреля 2009 - 15 апреля 2010"

а уж содержать дополнительно колонку и поддерживать ее целостность - это уже лишняя работа
я за генерацию последовательности на лету
soleil@mmc вне форума Ответить с цитированием
Старый 08.05.2010, 07:38   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

согласен.

а есть ещё одна "хитрость"... в таблице объявлений я бы лично сделал ссылку (внешний ключ) на таблицу выпусков. Кстати, может пригодится не только для чередования выхода объявлений... И тогда удалить из БД выпуск, на который есть ссылка, было бы весьма непросто (если есть ссылки на этот выпуск)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.06.2010, 08:43   #10
Алёна
Форумчанин
 
Аватар для Алёна
 
Регистрация: 11.03.2007
Сообщений: 149
Смущение

Цитата:
Сообщение от soleil@mmc Посмотреть сообщение
это будет чистое везение и магия чисел
просто в общем случае, не факт что газета выходит гарантированно каждый день
точнее так, интереснее научиться генерить последовательность чисел на любых наборах данных, из которых потом выбирать хоть через один, хоть через 3

2 Алёна
вы бы еще про субд написали бы
Извиняюсь за столь долгое молчание) почитала тут все ваши обсуждения, и остановилась на том, что soleil@mmc прав , теперь подскажите как научиться то генеирить послд-ть чисел, верней где оно будет храниться? это поле еще доп. надо приписывать к справочнику выходов?
В идееале хотелось бы реализовать следующее: ставим дату нашего первого выхода, кол-во выходов и признак -подряд или через 1 выход, далее программа сама определляет дату конечного выхода, и сооответ-но все даты выходов.
Если это глупо, но работает, значит это не глупо.

Последний раз редактировалось Алёна; 11.06.2010 в 08:51.
Алёна вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм. Paradigma Помощь студентам 7 31.03.2010 16:01
Алгоритм Aндрей Общие вопросы C/C++ 1 21.02.2010 18:49
Алгоритм VladimirAleks Помощь студентам 2 29.10.2009 13:11
алгоритм lucky Паскаль, Turbo Pascal, PascalABC.NET 4 07.05.2009 12:56