Ver Mensaje Individual
  #6 (permalink)  
Antiguo 19/05/2009, 06:13
ciberpata
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 20 años, 10 meses
Puntos: 0
Respuesta: Hacer update que incremente el valor de un campo en funcion de otro campo

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.
__________________

Espero haber aprendido algo de tí.
A mi padre.