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

Alternativa a Cursor

Estas en el tema de Alternativa a Cursor en el foro de SQL Server en Foros del Web. Hola, tengo que realizar agunas operaciones por lo cual tengo que recorrer los registros pensaba en cursores para realizar las operaciones pero he leido que ...
  #1 (permalink)  
Antiguo 31/05/2010, 08:53
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 19 años, 11 meses
Puntos: 0
Alternativa a Cursor

Hola, tengo que realizar agunas operaciones por lo cual tengo que recorrer los registros pensaba en cursores para realizar las operaciones pero he leido que esto consume muchos recursos, no se si exista alguna alternativa a esto, a continuacion pongo un ejemplo de que es lo que necesito realizar inicialmente pensaba usar 2 cursores:

Código:
Tabla1
idProd    Cantidad
0001          11
0002           5


Tabla2
pk_Tabla2      idProd         Exis_Mov       Costo_Mov
1                   0001            5                 10
2                   0001           10                 11
3                   0002           10                 20
lo que pensaba hacer es en un cursor leer la primer tabla dentro de este cursos abrir otro cursor que selecionara solo los registros del primer producto leido y calcular valores apartir de su existencia y costo de la tabla 2 recorriendo uno por uno seria algo asi Variable=variable+5*10 en la primer vuelta, en la segunda variable=variabe+6*11 (son 6 por que son los que necesito para completar 11), despues seguiria con el segundo producto y haria lo mismo.

Gracias de antemano
  #2 (permalink)  
Antiguo 31/05/2010, 09:30
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Alternativa a Cursor

Pues perdona, pero no entendi exactamente que deseas hacer, puedes darnos mas detalles.
  #3 (permalink)  
Antiguo 31/05/2010, 10:57
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 19 años, 11 meses
Puntos: 0
Respuesta: Alternativa a Cursor

necesito leer la primer tabla por ejemplo tiene producto 0001, despues en base a eso hacer un select de la tabla2 solo de ese producto y recorrer fila por fila el resultado del select para hacer operaciones con las columnas de cada fila, terminando con el producto 0001, debe irse al producto 0002 de la tabla1 y volver a leer y hacer los mismo con la tabla2.
  #4 (permalink)  
Antiguo 31/05/2010, 13:14
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Alternativa a Cursor

Ahora si, ¿que operaciones debes hacer con los registros de la segunda tabla?
  #5 (permalink)  
Antiguo 31/05/2010, 16:15
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 19 años, 11 meses
Puntos: 0
Respuesta: Alternativa a Cursor

Necesito calcular el costo promedio por ejemplo en el primer producto voy a ocupar 11, entoces debe hacer esto:

En la tabla 2

Exis_Mov * Costo_Mov = 5 * 10 = 50
actualiza a 0 Costo_Mov,Como me faltan 6 se va al siguiente registro pero ahora solo toma 6 para completar los 11

6*11 = 66

Y actualiza a 11-6 = 5 Costo_Mov, estos importes se suman y se divieden entre la cantidad total= (50 + 60) / 11
  #6 (permalink)  
Antiguo 31/05/2010, 17:22
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Alternativa a Cursor

Mejor dinos, cual es tu metodología para calcular COSTO PROMEDIO

Ademdum: Estuve leyendo tu primera posta (apertura) y creo, no lo se, que el problema esta en el diseño de las tablas, en tu tabla 2, deberias tener la CANTIDAD que se ingreso, ¿cierto?

Última edición por iislas; 31/05/2010 a las 17:36

Etiquetas: cursor
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 02:44.