如何在(SQL)中解决此查询?

时间:2018-08-20 10:13:02

标签: sql

我有这样的表,其中包含id,Name,Uid,如下所示:

--------------
Id  Name   Uid  |
1   Ram     0   |
2   Sham    1   |
3   Cam     1   |
4   Dam     2   | 
5   Eam     3   | 
6   Fam     4   |
7   Gam     2
----------------

这是层次结构,例如:

            Ram
             |
       --------------
       |            |
      Sham         Cam 
       |            |
    ---------       ---
    |       |       |
   Dam     Gam      Eam

我想要有多少个工人在“某人喜欢”下工作(在Ram 2下,人在工作)

就像Ram具有id = 1,我们将检入Uid,所有具有Uid = 1的用户都将在Ram下工作

输出:

------------------------------------------------
Id  Name   Count(Number of Employee Working)   |
1   Ram       2                                |
2   Sham      2                                |
3   Cam       1                                |
4   Dam       0                                | 
5   Eam       0                                | 
6   Fam       0                                |
7   Gam       0                                |
------------------------------------------------

1 个答案:

答案 0 :(得分:1)

似乎您只想知道不直接遍历子树的直接子代的数量,您可以尝试:

SELECT t1.id,
       t1.name,
       (SELECT count(*)
               FROM elbat t2
               WHERE t2.uid = t1.id) count
       FROM elbat t1;