SQL Server:从单表中查找父子列中的祖父和大儿子关系

时间:2018-03-30 16:50:17

标签: sql-server

father_id     son_id
--------------------  
  A           B    
  B           C   

这里A是B的父亲,B是C的父亲。

我需要一个查询来获得A作为祖父,C作为孙子

2 个答案:

答案 0 :(得分:0)

您需要多次加入同一个表。这是一次只能获得孙子ID的迭代。

SELECT fb.son_id as grandson_id
FROM Family fa
JOIN Family fb on fb.father_id = fa.son_id
WHERE fa.father_id = :grandfather_id

请注意,如果表很大或者调用频繁到相同的关系,那么这不是一个高性能的解决方案,您需要考虑一些本地缓存。

答案 1 :(得分:0)

如下所示的简单查询将列出祖父和孙子的所有独特关系

create table fsrelation (father_id varchar(100),son_id varchar(100));

insert into fsrelation  
values ('a','b'), ('b','c');

select distinct 
    A.father_id as grandfather,
    B.son_id as grandson 
from 
    fsrelation A
join 
    fsrelation B on A.son_id = B.father_id