根据表B记录从一个表中选择记录

时间:2017-05-30 22:23:41

标签: sql recursion nested

我有2个表代表父子关系。

父ID的状态为T.

enter image description here

select Child_id from table B where parent_id ='2';

此父ID下的子记录总数为7。

在这7条记录中,其中一条是3条儿童记录的父母。

我需要一些帮助来编写一个查询,该查询应该返回给定parent_id的所有子记录 所以在这种情况下儿童记录的总数将是(7-1)+ 3 = 9;

here is what I have tried already.
--this gives me the 7 child records
select distinct Child_id from table B 
where parent_id in(
select parent_id from Table A where status = 'T' 
and A.parent_id = B.parent_id
and A.parent_id ='2');

1 个答案:

答案 0 :(得分:0)

您可以使用UNION查询合并两个级别(假设只有2个级别),例如:

SELECT b.child_id
FROM tableB b JOIN tableA a ON b.parent_id = a.parent_id
WHERE a.status = 'T'

UNION

SELECT b.child_id
FROM tableB b JOIN tableB b1 ON b.parent_id = b1.child_id
JOIN tableA a ON b1.parent_id = a.parent_id
WHERE a.status = 'T'