试图获取父ID的父ID

时间:2013-07-21 18:45:24

标签: php mysql

我正在使用PHPMYSQL从头开始开发电子商务网站。我有一个类别表,一列为ID,另一列为Parent_ID

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

在我的“Groceries”类别中,我有“Cleaning& Home”子类别,在“Cleaning& Home”下,我有几个类别,如“洗衣店”,“浴室用品”等。

我的问题是第三级的产品不会显示在“Groceries”类别中,因为从技术上讲,“Laundry”的父ID是“Cleaning& Home”。永远不会超过三个级别(父级,子级,孙级),但我希望孙级别的类别也显示在父级别中。

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

1 个答案:

答案 0 :(得分: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'];

然后,您可以使用idor与父类别,子类别或其他内容进行比较。