|
|
|
| обрисую ситуацию. есть таблица
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 раза в месяц(((
или подскажите как лучше оптимизировать таблицу, чтобы выборка была более-менее удобной... в тупике сижу( | |
|
|
|
|
|
|
|
для: 1999
(31.08.2007 в 20:04)
| | Вероятно следует добавить поле для даты добавления сообщения. | |
|
|
|
|
|
|
|
для: 1999
(31.08.2007 в 20:04)
| | если я правильно понял, и необходимо выводить повторяющиеся события столько раз сколько они будут проходить, то, пожалуй, можно сделать это следующим образом: вычислить разницу (end_date - begin_date) в днях, и делить на 7. потом уже средствами пхп выводить эту строку столько раз сколько недель будет проходить данное событие...
это конечно очень не точный метод... но что придумал из исходных условий, то и написал ))...
А вообще, по-моему необходимо модифицировать саму структуру, может легче будет каждое событие, в каждый день, и каждый раз выносить отдельным id ... | |
|
|
|
|
|
|
|
для: evilive
(03.09.2007 в 09:34)
| | спасибо. вот этот метод и решил применить... ибо времени мало.
о результатах позднее | |
|
|
|
|
|
|
|
для: 1999
(03.09.2007 в 13:06)
| | еще к слову:
переменную every которая у вас описана как varchar(7), можно описать одно байтовым числом, т.е. каждый разряд(бинарный) отвечает за свой день недели...
... т.е.
пн = 1
вт = 2
ср =4
чт = 8
пт = 16
сб = 32
вс = 64
можно еще и одноразовость обозначить как, 128 (а можно и поле активности запихнуть сюда ))); соответственно сочетание некоторых дней есть сумма их весов... имхо так будет проще и быстрее, и меньше памяти :)... удачи... | |
|
|
|