我有这种表格层次结构:
Table A
|
| Table B
|
| Table C
|
| Table D
对于Table A
中的给定行,让我们说ID=1
行,我想获得此输出:
ID | childB | ChildC | childD
-------------------------------
1 | x | x | x
其中childB
是Table B
中的子女数量,ChildC
是Table C
中找到的子女Table B
中的子女...等
我想通过一个sql查询获得此输出。现在我只能使用此查询获得Table B
中孩子的计数:
SELECT a.ID, (SELECT
COUNT(b.parentID)
FROM TableB AS b
WHERE b.parentID= a.ID)
AS childB
FROM TableA a
WHERE a.ID =1
答案 0 :(得分:1)
如果您希望将其用于特定ID(例如ID=1
提到的那样),您可以在left join
和idparent
上id
使用count(distinct)
并使用select a.ID,
count(distinct b.id) childB,
count(distinct c.id) childC,
count(distinct d.id) childD
from tableA a
left join tableB b on b.parentID = a.ID
left join tableC c on c.parentID = b.ID
left join tableD d on d.parentID = c.ID
where a.ID=1
group by a.ID;
}:
{{1}}
这是一个小提琴DEMO。