mysql:在父子关系表中通过单个查询查找第一个父亲

时间:2014-10-28 06:22:29

标签: mysql relational-database

我有一个父子id的关系表,这是多对多关系表和用户表中存储的用户id,表的基本格式在这里:

.......................... | father_id | son_id | ........................... | A | B | .......................... | B | C | .......................... | C | D | .......................... | D | E |

现在我必须找到任何一个儿子的最伟大的父亲,我可以通过单个MySQL查询实现这一点,还是我必须使用PHP循环?

1 个答案:

答案 0 :(得分:0)

你的问题不清楚,但如果你想要每个父亲的祖父都是曾祖父:

你的桌子是"人[father_id]是人​​的父亲[son_id]"的行。以is_father_of(father_id,son_id)的形式简写。请注意,速记就像一个SQL表声明。别名fs,gs,ggs到原始表is_father_of。你想要行(ggs.is_father_id)在哪里

    is_father_of(fs.father_id,fs.son_id)
and is_father_of(gs.father_id,fs.father_id)
and is_father_of(ggs.father_id,gs.father_id)

这是

select gg.is_father_id
from is_father_of fs
join is_father_of gs on gs.son_id = fs.father_id
join is_father_of ggs on ggs.son_id = gs.father_id