我正在尝试为下表优化我的PHP代码
Create table categories (
cat_id Int UNSIGNED NOT NULL AUTO_INCREMENT,
parent_id Int UNSIGNED,
cat_name Varchar(50) NOT NULL,
Primary Key (cat_id)) ENGINE = InnoDB;
要获取所有类别和子类别,我使用一个查询仅查询父类别,然后发出单个查询以获取子类别。
这是我列出所有主要类别的代码
$result = mysql_query("SELECT cat_id, cat_name FROM categories WHERE parent_id IS NULL");
列出我使用以下查询
的每个类别的各个子类别$sub_result = mysql_query ("SELECT cat_id, cat_name FROM categories WHERE parent_id=$cat_id");
我有30个类别,所以上面每个页面发出30个查询,我试图最小化查询数量。任何提示?
由于
答案 0 :(得分:1)
关于managing hierarchical data的文章可能会给你一些启发。不要因为它在MySQL网站上的事实而气馁,主要思想是相同的。
答案 1 :(得分:0)
由于缺乏对递归查询的支持,这在MySQL中很难实现。
有几种替代方法可以构建表,以便您可以在单个查询中查询层次结构的所有后代。但它们涉及改变存储数据的方式。
有关演示多种解决方案的示例,请参阅我的演示文稿Models for Hierarchical Data with SQL and PHP。