Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/10/2005, 05:36
algicor
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años, 1 mes
Puntos: 0
Optimizacion de una Consulta

Tengo que realizar un informe, en que la información esta almacenada en varias tablas, en este caso en 3, Usuario, Usr_Cnt., Cuentas
El resultado del informe deberia ser el siguente

Mostrar un listado de los usuarios con las Cuentas que posee
Algo parecido a esto:

Paco - BBV
Paco - Banesto
Paco - Bancaja
Luis - Bancaja
Andres - BBV
Andres - CAM
Juan -Cam
Juan -BBV
Juan -Bancaja

Realizar una consulta que me devuelta estos datos, en sencillo, de echo, no es el problema, lo que quiero es q no aparezcan los nombre de los usuarios repetidos, y es lo que no se hacer, o mejor dicho, no se si se puede hacer con una solo consulta.
Para que muestre algo parecido a lo siguiente:
Paco -BBV
-Banesto
-Bancaja

Luis -Bancaja

Andres -BBV
-CAM

Juan -Cam
-BBV
-Bancaja

Una posible solución, la he encontrado haciendo 2 consultas, y realizando 2 bucles, la primera consulta recorre la tabla de Usuarios, y la segunda consulta, recorre las tabla de Usr_Cnt., Cuentas, con el indice del Usuario, para buscar coincidencias: el codigo seria algo parecido a esto


SQLUsuarios= "SELECT * FROM Usuario"
Set bd = bdconn.Execute(SQLUsuarios)
while (not bd.eof)
tmp_ IdUsuario =bd("IdUsuario ")
Response.write bdCuentas(“NombreUsuario”)

SqlCuentas = "SELECT * FROM Cuentas, Usr_Cnt WHERE Cuentas.IdCuenta= Usr_Cnt. IdCuenta AND Usr_Cnt. IdUsuario="&tmp_ IdUsuario &"
Set bdCuentas = bdconn.Execute(SqlCuentas)

while (not bdCuentas.eof)
Response.write bdCuentas(“NombreCuentas”)
Response.write “<br>”
bdCuentas.MoveNext()
wend


bd.MoveNext()
wend



La pregunta, despues de todo este rollo, es??

Como optimizar este informe???? Suponiendo, que el numero de Usuarios es muy alto, 5000, y en numero de cuentas alrededor de 1000, el coste de este algoritmo es altissimo!!,
__________________
Salut i Força al Canut

Última edición por algicor; 28/10/2005 a las 06:03