father_id son_id
--------------------
A B
B C
这里A是B的父亲,B是C的父亲。
我需要一个查询来获得A作为祖父,C作为孙子
答案 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