У меня проблема, мой запрос не работает должным образом
SELECT * FROM a
LEFT JOIN b on a.eid = b.id
LEFT JOIN c ON a.cid = c.id
WHERE
DAYOFYEAR(a.start) BETWEEN :startdate_day_of_year AND :enddate_day_of_year
AND
:year BETWEEN a.start AND a.end
: startdate_day_of_year и: enddate_day_of_year передаются из пользовательского ввода... 1-365 : год передается с пользовательского ввода... 2011
Проблема в том, что событие может повторяться каждый год (т.е. событие, начатое в 2008 году и прошедшее через 2012 год). Он должен отображать событие каждый год...
Когда я добавил таблицу c в микс, я начал получать ограниченные результаты... если бы я заменил ту часть с фиксированными датами вместо dayofyear и годом, когда она начала работать так, как должна... но тогда я не могу получить повторяющиеся события.
Танк ты! BR
Повторяющиеся события сильно отличаются от повторяющихся событий. Если повторяющиеся события имели, например, год начала и конца года, у меня будет отдельная таблица для повторяющихся событий.
Else, у меня бы был логический столбец is_yearly_event
и он проверял бы только год, если он не установлен:
...AND (a.is_yearly_event != 0 OR :year BETWEEN a.start AND a.end)