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;

すべてのカテゴリとサブカテゴリを取得するには、1 つのクエリを使用して親カテゴリのみをクエリし、個々のクエリを発行してサブカテゴリを取得します。

ここにすべての主要なカテゴリをリストするための私のコードがあります

$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 では、再帰クエリがサポートされていないため、これは困難です。

単一のクエリで階層のすべての子孫をクエリできるように、テーブルを構造化する別の方法がいくつかあります。ただし、データの保存方法を変更する必要があります。

いくつかのソリューションを示す例については、私のプレゼンテーション「SQL と PHP を使用した階層データのモデル」を参照してください。

于 2010-09-29T23:27:38.607 に答える