Codice PHP:
(SELECT * FROM `eventi`
WHERE ripetibile = '2'
AND '2008-11-03'>=data_in
AND '2008-11-03' <= data_fi)
UNION (SELECT * FROM `eventi`
WHERE ripetibile = '1'
AND '2008-11-03' <= data_fine_rip
AND (
(
'2008-11-03' >= CONCAT('2008-11-',giorno_mese)
AND '2008-11-03' <= ADDDATE(concat('2008-11-',giorno_mese),DATEDIFF( data_fi, data_in ))
)
OR(
'2008-11-03' >= CONCAT('2008-10-',giorno_mese)
AND '2008-11-03' <= ADDDATE(concat('2008-10-',giorno_mese),DATEDIFF( data_fi, data_in ))
)
)
)UNION(SELECT * FROM `eventi`
WHERE ripetibile = '1'
AND (
(
'2008-11-03' >= CONCAT('2008-11-',giorno_mese)
AND '2008-11-03' <= ADDDATE(concat('2008-11-',giorno_mese),DATEDIFF( data_fi, data_in ))
)
OR(
'2008-11-03' >= CONCAT('2008-10-',giorno_mese)
AND '2008-11-03' <= ADDDATE(concat('2008-10-',giorno_mese),DATEDIFF( data_fi, data_in ))
)
)
)UNION(SELECT * FROM eventi
WHERE ripetibile='1'
AND (
(
'2008-11-04' >= DATE_SUB(STR_TO_DATE(CONCAT(CONCAT('2008',WEEKOFYEAR('2008-11-04 '),giorno_settimana)), '%X%V %W'), INTERVAL 7 DAY)
AND
'2008-11-04' <= ADDDATE(DATE_SUB(STR_TO_DATE(CONCAT(CONCAT('2008',WEEKOFYEAR('2008-11-04 '),giorno_settimana)), '%X%V %W'), INTERVAL 7 DAY),DATEDIFF( data_fi, data_in ))
)
OR
(
'2008-11-04' >= DATE_SUB(STR_TO_DATE(CONCAT(CONCAT('2008',WEEKOFYEAR('2008-11-04 '),giorno_settimana)), '%X%V %W'), INTERVAL 14 DAY)
AND
'2008-11-04' <= ADDDATE(DATE_SUB(STR_TO_DATE(CONCAT(CONCAT('2008',WEEKOFYEAR('2008-11-04 '),giorno_settimana)), '%X%V %W'), INTERVAL 14 DAY),DATEDIFF( data_fi, data_in ))
)
)
)UNION(SELECT * FROM eventi
WHERE ripetibile='1'
AND '2008-11-03' <= data_fine_rip
AND (
(
'2008-11-04' >= DATE_SUB(STR_TO_DATE(CONCAT(CONCAT('2008',WEEKOFYEAR('2008-11-04 '),giorno_settimana)), '%X%V %W'), INTERVAL 7 DAY)
AND
'2008-11-04' <= ADDDATE(DATE_SUB(STR_TO_DATE(CONCAT(CONCAT('2008',WEEKOFYEAR('2008-11-04 '),giorno_settimana)), '%X%V %W'), INTERVAL 7 DAY),DATEDIFF( data_fi, data_in ))
)
OR
(
'2008-11-04' >= DATE_SUB(STR_TO_DATE(CONCAT(CONCAT('2008',WEEKOFYEAR('2008-11-04 '),giorno_settimana)), '%X%V %W'), INTERVAL 14 DAY)
AND
'2008-11-04' <= ADDDATE(DATE_SUB(STR_TO_DATE(CONCAT(CONCAT('2008',WEEKOFYEAR('2008-11-04 '),giorno_settimana)), '%X%V %W'), INTERVAL 14 DAY),DATEDIFF( data_fi, data_in ))
)
)
)
come vedete la query è davvero lunga e piena di ripetizioni che probabilmente sono inutili. sapreste aiutarmi ad ottimizzarla?