De modo que se puede dar la siguiente Jerarquia:
-Administrador
-Supervisor
-Gerente
-Coordinador
-Asesor
Cada usuario tiene su propios registros capturados (en mi sistema son prospectos)
Tengo una consulta para sacar todos los prospectos de un usuario, y de todos sus subordinados. Es decir, yo Gerente veo todos mis registros, junto con los de mis Coordinadores asignados, junto con los de los Asesores asignados a mis Cordinadores....
La manera en que la tengo funciona, y sin problemas, solo que digamos tengo poco en sql y la manera en que la tengo se que no es la mas optima, ya que utilizo muchos select (como 11....) y tengo entendido que eso no es bueno....
Mi consulta es mas o menos la siguiente:
Código SQL:
Ver original
ALTER PROCEDURE [dbo].[spObtenerProspectos] @IDUSUARIO NUMERIC(18,0) AS SELECT IDPROSPECTO FROM prospectosnew WHERE PROSPECTOSNEW.IDUSUARIO IN (SELECT IDUSUARIO FROM USUARIOSNEW WHERE USUARIOSNEW.idpadre=@IDUSUARIO ) OR PROSPECTOSNEW.IDUSUARIO IN (SELECT idUsuario FROM USUARIOSNEW WHERE IDPADRE IN ( SELECT idUsuario FROM usuariosnew WHERE idpadre=@IDUSUARIO)) OR PROSPECTOSNEW.IDUSUARIO IN (SELECT idUsuario FROM USUARIOSNEW WHERE IDPADRE IN ( SELECT idUsuario FROM usuariosnew WHERE idpadre IN (SELECT IDUSUARIO FROM USUARIOSNEW WHERE USUARIOSNEW.idpadre=@IDUSUARIO))) OR PROSPECTOSNEW.IDUSUARIO IN (SELECT idUsuario FROM USUARIOSNEW WHERE IDPADRE IN ( SELECT idUsuario FROM usuariosnew WHERE idpadre IN (SELECT IDUSUARIO FROM USUARIOSNEW WHERE USUARIOSNEW.idpadre IN (SELECT IDUSUARIO FROM USUARIOSNEW WHERE USUARIOSNEW.idpadre=@IDUSUARIO)))) OR PROSPECTOSNEW.IDUSUARIO=@IDUSUARIO
Mi tabla de usuarios no tiene mas de 100 registros
y la tabla de prospectos estamos hablando que pueden ser 10mil, 20mil, 30mil registros...
alguna manera en que pueda evitarme el uso de tantos select y optimizar mi consulta????