Requête SQL pour obtenir récursive nombre d'employés en vertu de chaque gestionnaire de
Je suis à la recherche pour une requête SQL pour obtenir les récursive comte de Employee
sous chaque gestionnaire ou certains gestionnaires de autre table.
Structures de la Table sont:
Emp_Table
Emp_id Manager_id
1 1
2 1
3 1
4 3
5 3
6 5
7 5
8 7
9 7
10 7
Exécuter table:
Ce tableau n'est rien, mais certains gestionnaires sont disponibles ici. J'ai besoin de pour obtenir le nombre de chaque employé, en vertu de ce gestionnaire de
Manager_id
1
4
7
8
Je suis à la recherche pour la sortie suivante
Manager_ID Count_of_Employees
1 9
4 0
7 3
8 0
Veuillez noter que vos réponses ne donne que le rapport direct emploi nombre d'employés pour chaque gestionnaire, seulement je suis. Combat je suis à la recherche récursive de l'employé rapports avec les gestionnaires. Dans mon exemple ci-dessus que par votre requête, je vais obtenir pour la Manager_id 1 est 3, mais je suis à la recherche de la sortie est de 9. Merci à l'avance!
Merci à tous pour vos réponse. J'ai finalement obtenu la Requête. Veuillez trouver ma réponse.
Quoi? "Je suis à la recherche pour une requête SQL pour obtenir le nombre d'Employé-e .."
Généralement sur StackOverflow, les gens d'après ce qu'ils ont essayé en premier. À partir de là, les gens peuvent les aider. Si les réponses que vous recevez ne sont pas ce que vous cherchez, alors peut-être vous avez besoin de regarder ce que vous demandez.
Vous pouvez voir tout le monde est confus au sujet de ce qui, étant il est clair, en premier lieu.
Désolé pour la peine. Dans mon exemple de sortie j'ai afficher clairement la sortie avec récursive comte. Merci!
OriginalL'auteur Developer_29 | 2013-10-30
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, un remarque importante: la première ligne de La
Emp_Table
, oùEmp_id==Manager_Id==1
n'est pas seulement de sens, mais aussi provoquer une récursion infinie. Je vous suggère de le retirer.Afin de fournir une réponse, cependant, j'ai d'abord créé un point de vue qui élimine ces entrées invalides, et utilisé que au lieu de
Emp_Table
:De sorte qu'il se résume à la suivante, avec un peu d'aide d'une expression de table commune récursive:
Si vous finalement de retirer le contenu litigieux ligne(s), ou mieux encore mis en
Manager_Id=NULL
comme HABO suggéré, simplement ignorer levalid_mng
vue et de le remplacer avecEmp_Table
partout.Également une note de côté:
Execute
est un mot réservé à MYSQL. En évitant l'utilisation des mots réservés à l'utilisateur obect de nommage est toujours une bonne pratique.Manager_Id
de NULL. Il évite de rester bloqué sur les gestionnaires qui gèrent eux-mêmes.La droite. J'ai oublié de mentionner que, je vous remercie.
Cela Fonctionne pour moi. Merci!
Votre réponse temps d'exécution est de haute. J'ai modifié quelques petites choses à modifier le code fonctionne parfaitement. J'ai soumis une excellente réponse à mes questions. jetez un coup d'oeil. En tout cas un Grand merci pour votre travail.
Je ne vois aucune exigence de performance dans votre question.
OriginalL'auteur geomagas
Similaire à geomagas, mais pas en découlent. Il construit l'arborescence de rapports de gestion de manière récursive, résume ensuite il.
OriginalL'auteur HABO
Vous pouvez utiliser Group By:
OriginalL'auteur Sadek Noureddine
Si vous publiez du code XML ou des échantillons de données, il suffit de sélectionner les lignes dans l'éditeur de texte et cliquez sur le "exemples de code de la touche" " (
{ }
) sur la barre d'outils editeur (troisième à partir de la gauche, deuxième groupe d'icônes) pour bien le format et la syntaxe en surbrillance. Ou mettre en évidence les lignes et appuyez sur Ctrl-K pour format.MERCI @marc_s de nouveau!
Et aussi, vous pouvez l'utiliser (si vous ne pouvez pas se permettre de RedGate outils) architectshack.com/PoorMansTSqlFormatter.ashx
OriginalL'auteur simon
Vous pouvez essayer ce qui suit:
OriginalL'auteur rwking
OriginalL'auteur Joe
OriginalL'auteur James
OriginalL'auteur Sonam
Ma Réponse... Merci à tous pour votre aide.
OriginalL'auteur Developer_29