PHP 与MySQL - 只需一个查询即可获取顶级类别
我正在尝试通过 MySQL
进行一次查询,从子类别(可能是任何级别)获取第一个类别(级别为零,无父级)。这可能吗?
下面是一个示例 DB
结构:
Table categories
id (INT 11)
parent (INT 11, zero if it has no parent)
name
编辑:MPTT
会是解决该问题的更简单的方法吗?
I'm trying to get the first category (level zero, no parents) from a child category (which might be any level) with just one query with MySQL
. Is that possible?
Here's an example DB
structure :
Table categories
id (INT 11)
parent (INT 11, zero if it has no parent)
name
edit: Would MPTT
be a easier solution to the problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,使用 存储函数 和 递归。你可能会陷入无限循环,所以要小心。
Yes, with a stored function and recursion. You may run into an endless loop, so take care.
仅使用一个查询来扫描无限级别是不可能的,但如果您确定类别树的深度不超过一定数量的级别,您可以使用这一技巧,这适用于 4 个级别:
It is impossible to scan infinite levels with only one query but if you are sure your categoies tree doesn't go deeper than a certain number of levels you can use this trick, this is for 4 levels: