pid是父亲id id是儿子id!!!
sql是可以查的,我忘了怎么写(非数据库专攻),记得好像是要递归方式去查;
但其实你可以考虑换个思路哈:
在表上多增加一个列,例如叫path,存储的内容即为父子关系路径如: /1/12/ 这种,表示他们的族谱关系,这样就可以追朔到很久之前的祖先;如/1/12/33/45/ 这样就知道,45的爸爸是33,爷爷是12,曾祖就是1,这就是一个族谱关系;
每新建一个记录了,拿他父亲的path再加上自己的id拼接即可,修改也一样;
这样你就可以随心所欲去检索任何记录的族谱关系了
例1:我要知道id=17的父亲,祖父,曾祖父....,path like '%/17/'
例2:我要知道id=17的儿子,孙子,曾孙子...,取id=17的path出来,然后path like '(id=17的path)%'
取出来之后,要儿子或者父亲,或者孙子祖父等等,就很容易取处理了,将取出的path用split隔开,取里面的id,即为族谱id的数组,这个就不需要多说了吧;
纯手打,望采纳。
select count(1)
from 表名 a
left join 表名 b
on a.id=b.pid
left join 表名 c
on b.id=c.pid
where a.id = #{id}
父id,子id?
难倒sql还有继承关系?
我估计你是想说主键外键吧?
先去看看主键外键概念吧,先搞清楚你要问什么问题,你有什么需求
查儿子名字
SELECT name FROM table WHERE pid=?
查孙子数量
SELECT count(*) FROM table WHERE pid IN (SELECT id FROM table WHERE pid = ?)
同时查询
SELECT c.name name, count(c.name) count
FROM table c
LEFT JOIN table g
ON c.id = g.pid
WHERE c.pid = ?
这里面的table都是你这张表,c是child,g是grandchildren这两个理解就行,你运行下试试。
https://www.cnblogs.com/benbenduo/p/4588612.html。
看看这篇文章吧,使用递归查询试试。数据库方面我也不太懂,希望能帮到你。