我有一个父子id的关系表,这是多对多关系表和用户表中存储的用户id,表的基本格式在这里:
..........................
| father_id | son_id |
...........................
| A | B |
..........................
| B | C |
..........................
| C | D |
..........................
| D | E |
现在我必须找到任何一个儿子的最伟大的父亲,我可以通过单个MySQL查询实现这一点,还是我必须使用PHP循环?
答案 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