Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выборка событий за месяц
 
 автор: 1999   (31.08.2007 в 20:04)   письмо автору
 
 

обрисую ситуацию. есть таблица


      id      int(12)
    place     int(6)
    begin_date     date
    end_date     date
    time     time
    short     varchar(255)
    full     text
    title     varchar(255)
    keywords     varchar(255)
    description     varchar(255)
    active     enum('1', '0')
    every     varchar(7)


в таблице - события афиши. в ней лежат сразу 2 разных типа событий: 1) одноразовые с одинаковыми begin_date и end_date и every = "0" и 2) периодические с различающимися датами и every = например "137", т.е. собывтия будут происходить по понедельникам, средам и воскресеньям.

собсна вопрос. мне нужно выбрать все события на месяц. как это можно сделать (ведь 1 событие с every != "0" может происходить сразу 4 раза в месяц(((

или подскажите как лучше оптимизировать таблицу, чтобы выборка была более-менее удобной... в тупике сижу(

   
 
 автор: cheops   (01.09.2007 в 09:53)   письмо автору
 
   для: 1999   (31.08.2007 в 20:04)
 

Вероятно следует добавить поле для даты добавления сообщения.

   
 
 автор: evilive   (03.09.2007 в 09:34)   письмо автору
 
   для: 1999   (31.08.2007 в 20:04)
 

если я правильно понял, и необходимо выводить повторяющиеся события столько раз сколько они будут проходить, то, пожалуй, можно сделать это следующим образом: вычислить разницу (end_date - begin_date) в днях, и делить на 7. потом уже средствами пхп выводить эту строку столько раз сколько недель будет проходить данное событие...

это конечно очень не точный метод... но что придумал из исходных условий, то и написал ))...

А вообще, по-моему необходимо модифицировать саму структуру, может легче будет каждое событие, в каждый день, и каждый раз выносить отдельным id ...

   
 
 автор: 1999   (03.09.2007 в 13:06)   письмо автору
 
   для: evilive   (03.09.2007 в 09:34)
 

спасибо. вот этот метод и решил применить... ибо времени мало.
о результатах позднее

   
 
 автор: evilive   (03.09.2007 в 14:29)   письмо автору
 
   для: 1999   (03.09.2007 в 13:06)
 

еще к слову:
переменную every которая у вас описана как varchar(7), можно описать одно байтовым числом, т.е. каждый разряд(бинарный) отвечает за свой день недели...

... т.е.
пн = 1
вт = 2
ср =4
чт = 8
пт = 16
сб = 32
вс = 64

можно еще и одноразовость обозначить как, 128 (а можно и поле активности запихнуть сюда ))); соответственно сочетание некоторых дней есть сумма их весов... имхо так будет проще и быстрее, и меньше памяти :)... удачи...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования