Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema con Update

Estas en el tema de Problema con Update en el foro de Mysql en Foros del Web. Quiero reducir codigo pero de la manera que lo hago no me esta funcionando. Los updates son: UPDATE cont c, sis s SET c.line=c.line+5 WHERE ...
  #1 (permalink)  
Antiguo 14/09/2010, 21:43
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 9 meses
Puntos: 2
Información Problema con Update

Quiero reducir codigo pero de la manera que lo hago no me esta funcionando.

Los updates son:

UPDATE cont c, sis s SET c.line=c.line+5 WHERE c.clients=s.clients AND c.cons>3000;

UPDATE cont c, lust l SET c.line=c.line+5 WHERE c.clients=l.clients AND c.cons>3000;

Entonces quiero reducirlos a 1 solo update pero no me funciona, la manera que lo estoy haciendo es la siguiente:

Update unificado:

UPDATE cont c, sis s, lust l SET c.line=c.line+5 WHERE c.clients=s.clients OR c.clients=l.clients AND c.cons>3000;

Podria alguien indicarme el error o la manera correcta ?

GraX
  #2 (permalink)  
Antiguo 15/09/2010, 07:19
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Problema con Update

bigcrime... mirate este ejemplo de update inner join.

Para tu caso, es adicionar un inner join para enlazar las 3 tablas.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 17/09/2010, 16:42
 
Fecha de Ingreso: septiembre-2009
Ubicación: Cuenca
Mensajes: 57
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: Problema con Update

Lo que veo es un error de lógica con paréntesis.
No es lo mismo decir: algo1 OR algo2 AND algo3 que (algo1 OR algo2) AND algo3
En el primer caso resulta que algo2 y algo3 son unidos por el AND por lo que algo1 será procesado luego.
En el segundo caso se procesa primero algo1 y algo2 debido al paréntesis, en cualquiera de los dos casos que resulte, ocurrirá posteriormente algo3. Siguiendo esto, tu línea únicamente necesita paréntesis tal como este ejemplo que te dí. Te quedaría esto:
Código MySQL:
Ver original
  1. UPDATE cont c, sis s, lust l SET c.line=c.line+5 WHERE (c.clients=s.clients OR c.clients=l.clients) AND c.cons>3000;

Carpe diem amigo

Etiquetas: update
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:21.