Yo tengo esta sentencia hecha siguiendo sus indicaciones:
Código:
update
ofertas
set
num_orden=if(
(round(TO_DAYS(ofertas.fechaexpiracion ) - TO_DAYS( date( ofertas.fechapublicacion ) ))/7) between '1' and '4',(1 + ROUND(RAND() * (5 - 1))),
if((round(TO_DAYS(ofertas.fechaexpiracion ) - TO_DAYS( date( ofertas.fechapublicacion ) ))/7) between '8' and '12',(10 + ROUND(RAND() * (15 - 10))),num_orden)
)
where
id_usuario='927'
AND
estado='1'
AND
(DATE(fechapublicacion) >='2008-10-01' AND DATE(fechapublicacion) <= '2008-10-31')
De esta forma cubro todos los items que tienen entre 1y 4 semanas, y entre 8 y 12 semanas.
Ahora lo que quiero es añadir, los que tienen entre 4 y 8 semanas y hago esto (marco en rojo lo que he añadido):
Código:
update
ofertas
set
num_orden=if(
(round(TO_DAYS(ofertas.fechaexpiracion ) - TO_DAYS( date( ofertas.fechapublicacion ) ))/7) between '1' and '4',(1 + ROUND(RAND() * (5 - 1))),
if(
(round(TO_DAYS(ofertas.fechaexpiracion ) - TO_DAYS( date( ofertas.fechapublicacion ) ))/7) between '4' and '8',(6 + ROUND(RAND() * (9 - 6))),
if((round(TO_DAYS(ofertas.fechaexpiracion ) - TO_DAYS( date( ofertas.fechapublicacion ) ))/7) between '8' and '12',(10 + ROUND(RAND() * (15 - 10))),num_orden),
num_orden)
)
where
id_usuario='927'
AND
estado='1'
AND
(DATE(fechapublicacion) >='2008-10-01' AND DATE(fechapublicacion) <= '2008-10-31')
y no me sale, podrían explicarme por qué?. Evidentemente debo estar cometiendo un error de sintaxis pero llevo toda la mañana y no lo veo.