Tengo una tabla de usuarios, donde cada usuario esta relacionado a un usuario de la misma tabla (campo llamado idpadre)
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 originalALTER 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????