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

Recorrer tabla

Estas en el tema de Recorrer tabla en el foro de SQL Server en Foros del Web. Este tema lo puse en base de datos pero es especificamente de sql server Disculpas Por ejemplo tengo una tabla donde estan todos los agentes ...
  #1 (permalink)  
Antiguo 18/08/2009, 18:14
 
Fecha de Ingreso: abril-2009
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 0
Recorrer tabla

Este tema lo puse en base de datos pero es especificamente de sql server Disculpas

Por ejemplo tengo una tabla donde estan todos los agentes vendedores

AgentID | MasterAgentid
Carlos |
Luis | Carlos
Felipe | Carlos
jose |
Miguel | Jose
Andres | CArlos
Luisa | Jose
Andy | JOse
Marco | Carlos


Los agentes q tienen el masteragent vacios son los agentes principales y los otros indica a quien pertenece


Yo tengo un store procedure q recibe como parametro el agente principal y me da de resultado todos los q pertenecen a el

lo q necesito es hacer es que mediante un procedimiento recorra o reciba cada agente principal y el resultado me lo inserte en una tabla temporal y que en esa tabla vayan dos campos
el nombre del subagent y el nombre del agente al q pertence

Es que el problema es q puede ver hasta tres o cuatro niveles o sea
carlos es el agente principal, luis pertenece a carlos , pero esta andre q reporta a luis y ana q reporta a andre

Ese store me saca ese paquete donde me muestra todos los q tienen como principal a carlos
pero no me recorre por cada agente principal


Asi q la idea es esa la manera q este nuevo procedimiento busque los Agentes principales y ejecute el sp q ya tengo y me envie los resultados de cada agente principal a esa tabls con los dos campos q expliq antes
  #2 (permalink)  
Antiguo 19/08/2009, 06:21
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 11 meses
Puntos: 38
Respuesta: Recorrer tabla

podemos ver el avance que tienes?

Una alternativa seria hacerlo con ciclos, si es sql 2000 (ejemplo de la ayuda de sql o Common table Expresions si es sql 2005.

Asi como informacion jerarquica en sql 2008...

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 19/08/2009, 06:33
Avatar de Koke_Infortecnica  
Fecha de Ingreso: agosto-2009
Mensajes: 23
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Recorrer tabla

Hay una solucion que es recorrer la tabla con un cursor, pero si hay muchos datos te puede tumbar un poco la máquina

Código transact sql:
Ver original
  1. declare @sCadenaCursor as nvarchar(150)
  2.     set @sCadenaCuentas=''
  3.  
  4.  
  5.         DECLARE Apunte_Cursor CURSOR FOR
  6.         SELECT Cuenta FROM Apuntes WHERE Opc1=@Opc1 and (Cuenta LIKE '651%') GROUP BY Cuenta;
  7.         OPEN Apunte_Cursor FETCH NEXT FROM Apunte_Cursor INTO @sCadenaCursor
  8.         WHILE @@FETCH_STATUS = 0
  9.            BEGIN
  10.           -- print(@sCadenaCursor +'Cursor')
  11.            set @sCadenaCuentas=@sCadenaCuentas + ''''+ @sCadenaCursor +''','
  12.            --print(@sCadenaCuentas + 'Cadena')
  13.               FETCH NEXT FROM Apunte_Cursor INTO @sCadenaCursor
  14.            END;
  15.         CLOSE Apunte_Cursor
  16.         DEALLOCATE Apunte_Cursor

Este lo que hace es concatenarme un string, pero dentro del bucle puedes hacer lo que quieras
  #4 (permalink)  
Antiguo 19/08/2009, 11:41
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Recorrer tabla

Bueno, habria que buscar una alternativa SIN CURSORES, acuerdense que en este grupo, habemos muchos ANTI-CURSORES.

Saludos.
  #5 (permalink)  
Antiguo 19/08/2009, 12:17
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 11 meses
Puntos: 38
Respuesta: Recorrer tabla

soy uno de ellos..





Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #6 (permalink)  
Antiguo 19/08/2009, 19:34
 
Fecha de Ingreso: abril-2009
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Recorrer tabla

Entonces q me recomiendan>>>>??????
  #7 (permalink)  
Antiguo 20/08/2009, 06:49
Avatar de Koke_Infortecnica  
Fecha de Ingreso: agosto-2009
Mensajes: 23
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Recorrer tabla

Bueno pues señores anti-cursores, cual es la alternativa ...

(Es por aprender que mis cursores me suelen tumbar bastante las cosas, pero es que no conozco otra alternativa XD)
  #8 (permalink)  
Antiguo 20/08/2009, 07:40
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 11 meses
Puntos: 38
Respuesta: Recorrer tabla

Hacer los procesos de forma masiva con selects, inserts, updates, deletes.

Para el caso especifico del codigo que posteaste la alternativa seria algo como:

Código:
declare @sCadenaCuentas as nvarchar(8000)  

set @sCadenaCuentas=''  

select @sCadenaCuentas = @sCadenaCuentas + ''''+ Cuenta  +''','           
FROM   Apuntes
WHERE  Opc1=@Opc1 and 
       (Cuenta LIKE '651%')
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #9 (permalink)  
Antiguo 20/08/2009, 08:37
Avatar de Koke_Infortecnica  
Fecha de Ingreso: agosto-2009
Mensajes: 23
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Recorrer tabla

Interesante, más que interesante ... no sabía que se podía hacer eso con una select.

E imagino que ira increiblemente más rápido.

Lo probaré

Muchas gracias
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 22:23.