我正在使用PHP
和MYSQL
从头开始开发电子商务网站。我有一个类别表,一列为ID
,另一列为Parent_ID
。
在categories.php
上展示产品时,我将其设置为显示Parent_ID
或ID
等于$_GET['id']
字段的产品。但现在我遇到了一个问题。
在我的“Groceries”类别中,我有“Cleaning& Home”子类别,在“Cleaning& Home”下,我有几个类别,如“洗衣店”,“浴室用品”等。
我的问题是第三级的产品不会显示在“Groceries”类别中,因为从技术上讲,“Laundry”的父ID是“Cleaning& Home”。永远不会超过三个级别(父级,子级,孙级),但我希望孙级别的类别也显示在父级别中。
我试过查看MYSQL
文档和其他论坛,但到目前为止还没有运气。
答案 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'];
然后,您可以使用id
将or
与父类别,子类别或其他内容进行比较。