0

我正在使用PHPMYSQL. 我有一个类别表,一列 for ID,一列 for Parent_ID

在 上显示产品时categories.php,我将其设置为显示Parent_IDORID等于$_GET['id']字段的产品。但是现在我遇到了一个问题。

在我的“杂货”类别中,我有“清洁与家居”子类别,在“清洁与家居”下,我有几个类别,如“洗衣”、“浴室用品”等。

我的问题是第三级的产品没有显示在“杂货”类别中,因为从技术上讲,“洗衣”的父 ID 是“清洁与家庭”。永远不会超过三个级别(父、子、孙),但我希望孙级别中的类别也显示在父级别中。

我尝试过查看MYSQL文档和其他论坛,但到目前为止还没有运气。

4

1 回答 1

0

这需要几个连接才能到达最高父级:

select c.*,
       coalesce(cp2.id, cp.id, p.id) as MostParentId
from categories c left outer join
     categories cp
     on c.parent_Id = cp.id left outer join
     categories cp2
     on cp.parent_id = cp2.parent_id
where c.id = $_GET['id'] or cp.id = $_GET['id'] or cp2.id = $_GET['id'];

然后,您可以将用于匹配的idsor与父类别、子类别或其他内容进行比较。

于 2013-07-21T18:59:37.070 回答