Zrobiłem coś takiego, ale to nie do końca działa tak jak powinno.
SELECT (
CASE WHEN (
`Event`.`calendar_recurrent` = 0.25
)
THEN TIMESTAMPADD( WEEK, CEIL( (
UNIX_TIMESTAMP( ) - UNIX_TIMESTAMP( `Event`.`datetime` ) ) /604800 ) , `Event`.`datetime`
)
WHEN (
`Event`.`calendar_recurrent` = 0.5
)
THEN TIMESTAMPADD( WEEK, CEIL( (
UNIX_TIMESTAMP( ) - UNIX_TIMESTAMP( `Event`.`datetime` ) ) /1209600 ) *2, `Event`.`datetime`
)
WHEN (
`Event`.`calendar_recurrent` =1
AND MONTH( NOW( ) ) <10
)
THEN CONCAT( YEAR( NOW( ) ) , "-", "0", MONTH( NOW( ) ) , "-", DATE_FORMAT( `Event`.`datetime` , "%d %H:%i:%s" ) )
ELSE CONCAT( YEAR( NOW( ) ) , "-", MONTH( NOW( ) ) , "-", DATE_FORMAT( `Event`.`datetime` , "%d %H:%i:%s" ) )
END
) AS `newdatetime` , `Event`.`id` , `Event`.`name` , `Event`.`image` , `Event`.`desc` , `Club`.`name`
FROM `events` AS `Event`
LEFT JOIN `clubs` AS `Club` ON ( `Event`.`club_id` = `Club`.`id` )
WHERE (
(
`Event`.`datetime` > NOW( )
)
OR (
`Event`.`calendar_recurrent` >0
)
)
ORDER BY `newdatetime` ASC
LIMIT 4
Generalnie chodzi o to, że ma pobrać z bazy danych najbliższe imprezy (bez tych co już się odbyły), no i posortować je od najbliższych do najdalszych. W przypadku imprez cyklicznych musi sobie obliczyć nową datę tej imprezy, no ale nie jak wrzucam newdatetime do warunku to mi wyskakuje błąd że nie ma takiego pola. Jak chcę dać AS `Event`.`newdatetime` to też wyskakuje błąd.