1

我正在尝试针对下表优化我的 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 个查询,我试图尽量减少查询数量。有什么提示吗?

谢谢

4

2 回答 2

1

关于管理分层数据的文章可能会给您一些启发。不要因为它在 MySQL 站点上而气馁,主要思想是相同的。

于 2010-09-29T23:14:19.957 回答
0

由于缺乏对递归查询的支持,这在 MySQL 中很困难。

有几种替代方法来构建表,以便您可以在单个查询中查询层次结构的所有后代。但它们涉及改变您存储数据的方式。

有关演示几种解决方案的示例,请参阅我的演示文稿Models for Hierarchical Data with SQL and PHP

于 2010-09-29T23:27:38.607 回答