Sergio, En Sql... ya sea SQLServer o MySQL podes usar case... como mencionaste MySql te paso dos link de ejemplo.
* http://stackoverflow.com/questions/4216605/mysql-case-in-update-statement-with-replace * http://stackoverflow.com/questions/6734231/mysql-update-case-help Pero si bien esto te puede solucionar el inconveniente, la realidad es que cuanto mas complejo sea ek query mas va a tardar. Lo que te recomiendo ademas es que le agregues indices sobre los campos que vas a usar en el case, de esta forma el motor no tiene que estar creando los índices para hacer la actualización. Saludos, Pancho Cordoba El 23 de noviembre de 2012 01:40, Alejandro Paciotti Iacchelli < [email protected]> escribió: > Porque no traes en un cursor todos los movimientos mas los campos que > necesites en cero. Y luego con un procedimiento los calculas en el cursor > de FOX, y si querés, luego podés recorrer ese cursor y volver a grabar en > MYSQL. > > Sería: SELECT CODPROV, DEBITO, CREDITO, 0.00 AS SALDOANTERIOR , 0.00 AS > TOTDEB , 0.00 AS TOTCRE , 0.00 AS SALDOACTUAL FROM TablaMovimientos ORDER > BY CODPROV > > (No me quedó claro si la tabla de movimientos la traes de DBF) > > Y luego, en este cursor lo tendrías que recorrer e ir calculando el > SALDOANTERIOR EL TOTDEB, TOTCRE y el SALDOACTUAL. > > Saludos. > > > > > > El 23 de noviembre de 2012 00:12, Sergio D.Castellari < > [email protected]> escribió: > > ** >> ** >> Hola gente, >> >> Nosé si el titulo del Asunto es exacto, pero la intención es ver si >> alguien con conocimientos en MySQL tiene alguna formula para resolver el >> siguiente problema: >> Tengo una tabla de Proveedores, donde tiene un campo que indica el Saldo >> Actual del mismo y otra tabla que va registrando los movimientos de los >> mismos, con un formato de registro parecido a este: >> CODPROV, DEBITO, CREDITO, SALDOANTERIOR , TOTDEB , TOTCRE , SALDOACTUAL entre >> otros campos... >> >> La cuestion es la siguiente (es una migracion de un programa >> clipper/DBFs) que en un procedimiento, REVISO toda la tabla de movimientos >> y voy ACTUALIZANDO los campos SALDOANTERIOR , TOTDEB , TOTCRE , SALDOACTUAL >> registro a registro, por cada Proveedor segun las operaciones de Debitos y >> Creditos. >> Al final del procedimiento, me queda en la tabla de Proveedores los >> Saldos Actuales, y en la tabla de movimientos todos los registros AJUSTADOS >> registro a registro con dichos campos como muestro a continuación... >> >> DEBITO CREDITO SALDOANTERIOR TOTDEB TOTCRE SALDOACTUAL >> 0.00 1264.45 0.00 0.00 1264.45 -1264.45 >> 1264.45 0.00 -1264.45 1264.45 0.00 0.00 >> 0.00 641.42 0.00 0.00 641.42 -641.42 >> 3.40 0.00 -641.42 3.40 0.00 -638.02 >> 638.02 0.00 -638.02 638.02 0.00 0.00 >> >> Los ultimos 4 campos son los que se ajustan registro a registro según los >> valores de los campos Debito y Credito. >> >> Actualmente tengo hecho un procedimiento que realiza este trabajo >> correctamente...peeeero...tarda muuucho tiempo, creo que principalmente por >> que hago un query por cada 2 registros, de tal forma que si la tabla tiene >> 60000 registros, hago 30000 querys!!!! >> >> If cTipoComp="FA" .or. cTipoComp="CI" >> cQuery:="Update MOVIPROV Set TOTCRE="+AllTrim(cCredito)+"," >> nSalAct:=nSalAnt - Val(cCredito) >> nSalAnt:=nSalAct >> cQuery:=cQuery+"SALACT="+AllTrim(Str(nSalAct,12,2))+" Where >> IDMOVIPROV="+cID >> ElseIf cTipoComp="RE" .or. cTipoComp="NC" >> cQuery:="Update MOVIPROV Set TOTDEB="+AllTrim(cDebito)+"," >> nSalAct:=nSalAnt + Val(cDebito) >> nSalAnt:=nSalAct >> cQuery:=cQuery+"SALACT="+AllTrim(Str(nSalAct,12,2))+" Where >> IDMOVIPROV="+cID >> ElseIf cTipoComp="AP" .and. nSaldo <> 0 //Comprobante 'Anticipo' y >> todavia NO aplicado >> cQuery:="Update MOVIPROV Set TOTDEB="+AllTrim(cDebito)+"," >> nSalAct:= nSalAnt + Val(cDebito) >> nSalAnt:=nSalAct >> cQuery:=cQuery+"SALACT="+AllTrim(Str(nSalAct,12,2))+" Where >> IDMOVIPROV="+cID >> *¿¿¿ Existe algun metodo de MySQL, para que haga este proceso en un solo >> query o eventualmente un query por cada proveedor ???* >> *¿¿¿ Existe alguna manera de poder concatenar multiples Updates, en un >> solo query ???* >> ** >> Desde ya muchas gracias si alguien puede aportarme algo de >> luz...bah...una lampara gigante!!! >> >> Saludos, >> Sergio Castellari >> ** >> > > > > -- > [email protected] >
