php写函数 根据子类(id)递归查找顶级父类(id) 返回父类名字 (表结构:id name pid) 10

 我来答
liuqz2011
2012-12-16 · 超过58用户采纳过TA的回答
知道小有建树答主
回答量:188
采纳率:0%
帮助的人:133万
展开全部

你这种表结构叫邻接表,查询的方式通过自连接。如

SELECT t1.name AS lev1, t2.name as lev2, t3.name as lev3, t4.name as lev4

FROM Tbname AS t1

LEFT JOIN Tbname AS t2 ON t2.pid = t1.id

LEFT JOIN Tbname AS t3 ON t3.pid = t2.id

LEFT JOIN Tbname AS t4 ON t4.pid = t3.id

WHERE t1.name = 'XXXX'

这种方法的主要局限是你需要为每层数据添加一个自连接,随着层次的增加,自连接

变得越来越复杂,检索的性能自然而然的也就下降了。当然这种结构在查询前必须知道该节点所处的层级,否则无法确定自连接的深度。


邻接表模型的局限性很大,用纯SQL实现有一定的难度。不妨考虑其他模型,比如嵌套模型。


嵌套模型的基本结构是树型结构,SQL检索比邻接表要方便很多。



关于嵌套模型,PHPChina的第一期电子杂志PHPer也有过深入探讨,请参考!

参考资料: http://www.sitepoint.com/hierarchical-data-database-2/

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式