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

cursores

Estas en el tema de cursores en el foro de SQL Server en Foros del Web. tengo dos tablas una tablaclientes y otra productos,la idea es asignarle a cada cliente un producto cuando se termine los productos siga asiganado pero de ...
  #1 (permalink)  
Antiguo 30/06/2010, 18:41
 
Fecha de Ingreso: febrero-2005
Mensajes: 62
Antigüedad: 19 años, 2 meses
Puntos: 0
cursores

tengo dos tablas una tablaclientes y otra productos,la idea es asignarle a cada cliente un producto cuando se termine los productos siga asiganado pero de manera inversa ej
pedro---prod1
jose-----prod2
carlos---prod3
esteban---prod3
vicente---prod2
arturo---prod1

y poder ver cuantos clientes tiene asignado cada producto
cuando se terminen los clientes terminar el ciclo
se que se puede hacer esto con punteros,(no son muy efecientes) he declarado y recorrido el puntero de la tabla cliente pero como le voy asignando los productos...
existe la posibilidad de crear esto sin cursores

Última edición por pipe_24; 30/06/2010 a las 19:39
  #2 (permalink)  
Antiguo 01/07/2010, 08:05
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: cursores

mmm bueno en realidad si se puede hacer con cursores... pero hasta ahora... no l eveo utilidad... no dices como se ordenan los productos... ordenacion de los clientes alguna condicion... o solo es tarea de Univ?
  #3 (permalink)  
Antiguo 01/07/2010, 09:22
 
Fecha de Ingreso: febrero-2005
Mensajes: 62
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: cursores

los productos se ordenan descendentemente y los clientes de acuerdo al lugar donde viven
  #4 (permalink)  
Antiguo 01/07/2010, 09:37
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: cursores

A ver, lo que yo haria seria agregar una columna identity (temporalmente) a ambas tablas.
Luego formaria 2 conjuntos (subconsultas) de la tabla productos: uno ordenado ascendentemente, el otro descendentemente.
Despues haces un left join (por el campo identity) entre clientes y el primer conjunto. Cuando el join sea null usas el segundo conjunto.
Creo que deberia funcionar. No olvidar eliminar las columnas identity.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 05/07/2010, 15:37
 
Fecha de Ingreso: febrero-2005
Mensajes: 62
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: cursores

Muchachos esto es lo que llevo hasta el momento
*********************************************
declare cursor_cliente cursor for select rutcliente, '-' from clientes
declare @rutcliente varchar(12)
declare @cobra varchar(50)
declare @cobrador varchar(50)
declare @cont_cobra int
declare @cont_cobra_recorrido int
declare @total_cobra int
declare @cont_clientes int
declare @clientes_por_cobra int
set @clientes_por_cobra = 6
set @cont_cobra = 1
set @cobrador = '-'
set @cont_clientes = 0
select @total_cobra =(select COUNT (cobraid) from Cobrador)
open cursor_cliente
fetch next from cursor_cliente into @rutcliente,@cobrador
while @@FETCH_STATUS = 0
begin
set @cont_clientes = @cont_clientes + 1
set @cont_cobra_recorrido = 0
if (@cont_clientes = @clientes_por_cobra)
begin
set @cont_cobra = @cont_cobra + 1
set @cont_clientes = 1
print ''
end
if (@cont_cobra > @total_cobra)
begin
set @cont_cobra = 1
end
declare cursor_cobra cursor for select cobrador from cobrador
open cursor_cobra fetch next from cursor_cobra into @cobra
while @@FETCH_STATUS = 0
begin
set @cont_cobra_recorrido = @cont_cobra_recorrido + 1
if (@cont_cobra =@cont_cobra_recorrido)
begin
select @cobrador = @cobra
end
fetch next from cursor_cobra into @cobra
end
close cursor_cobra
deallocate cursor_cobra
print 'El cliente asignado es '+ @rutcliente + ' y el cobrador asignado es ' + @cobrador
fetch next from cursor_cliente into @rutcliente,@cobra
end
close cursor_cliente
deallocate cursor_cliente
aca llego al final de la tabla y vuelvo al principio pero como hago para recorrer la tabla a la inversa
  #6 (permalink)  
Antiguo 05/07/2010, 16:28
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: cursores

Intentalo SIN CURSORES...

Etiquetas: Ninguno
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 06:53.