Php 查找id的父项,直到条件为真
我有一个名为Php 查找id的父项,直到条件为真,php,mysql,recursive-query,Php,Mysql,Recursive Query,我有一个名为member的表,其结构如下 +----+-----------+-------------+ | id | parent_id | status | +----+-----------+-------------+ | 1 | 0 | DISTRIBUTOR | | 2 | 1 | DISTRIBUTOR | | 3 | 2 | DISTRIBUTOR | | 4 | 2 |
member
的表,其结构如下
+----+-----------+-------------+
| id | parent_id | status |
+----+-----------+-------------+
| 1 | 0 | DISTRIBUTOR |
| 2 | 1 | DISTRIBUTOR |
| 3 | 2 | DISTRIBUTOR |
| 4 | 2 | RETAILER |
| 5 | 4 | RETAILER |
| 6 | 5 | DISTRIBUTOR |
+----+-----------+-------------+
现在我想找到父id
。例如,如果我选择id
6,那么它将显示6的父id是5,但问题是:如果我选择了ID6,因为它的父项5的状态是零售商,它将向上检查ID5的父项id是什么,但因为ID4的父项id是零售商,它将再次向上检查ID4的父项id4的父id为2,状态分配器将停止,并输出id 6的父id为id 2
编辑(用户在评论部分给出的查询)
从id='6'的成员中选择id、父id、状态。我不知道如何得到我想要的结果,在条件为真之前找到下一个父id。可能重复“是”,但不同的是,如果零售商认为需要使用a来模拟递归查询,我如何跳过父id并继续,直到条件满足Distributor,或者重构数据库。正如Amit所说,MySQL不支持递归。取而代之的是,选项包括但不限于以下内容:-尽可能多次地将表连接到自身-在应用程序级别处理递归,例如使用PHP循环-使用存储过程处理递归-切换到嵌套集(或某种混合模型)除了“所谓的”邻接列表模型之外,所有这些解决方案都在其他地方进行了更深入的讨论,包括一些关于分层数据和MySQL的优秀、流行且易于谷歌搜索的文章。
SELECT id, parent_id, status FROM member WHERE id=6.