2010-08-14 60 views
0

我一直在寻找一秒钟,并看到有关显示类别的问题,并想知道如何显示我的父类别的所有子类别,例如我的链接如下?如何检索给定类别的子类别

我正在使用PHP & MySQL - 预先感谢!

这是我的链接。

http://www.example.com/categories/index.php?main_category=web-development&sub_1=programming&sub_2=html&sub_3=basics&sub_4=forms&sub_5=select-tag 

这是我的MySQL代码。

CREATE TABLE categories ( 
id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
parent_id INT UNSIGNED NOT NULL DEFAULT 0, 
category TEXT NOT NULL, 
PRIMARY KEY (id), 
INDEX parent (parent_id) 
); 

我知道我可以使用mod rewrite来让url看起来像这样。

http://www.example.com/categories/main-category/sub-1/sub-2/sub-3/sub-4/sub-5/ 
+0

你正在寻找一个递归查询或只是一个级别? – 2010-08-14 22:54:32

+0

@Mark Byers如果你的意思是显示所有的类别,然后递归的子类别。不只是一个类别及其子类别。 – 2010-08-14 22:57:16

+0

是的,这就是我的意思递归。 – 2010-08-14 23:03:11

回答

2

MySQL还不支持递归查询,所以你不能真正做你所要求的而没有很多努力。

我建议你看看比尔卡尔文的幻灯片Models for heirarchical data其他存储数据的方法(例如:嵌套集合,封闭表)。幻灯片48比较了不同设计的优缺点。 '查询子树'对你来说特别有意思,你正在使用的邻接列表模型是这类查询最难写的。

+0

即使我必须添加另一个表格,如何做到这一点的例子也会非常有用。 – 2010-08-14 23:04:21

+0

那么创建我需要的代码的最佳方式是什么? – 2010-08-14 23:30:03

+0

那么你如何建议我的MySQL表或表结构应该看起来像? – 2010-08-14 23:48:32