ホームページ >バックエンド開発 >PHPチュートリアル >カテゴリをクリックすると、現在のカテゴリ内のすべての製品とそのすべてのサブカテゴリが一覧表示されます。
カテゴリをクリックすると、現在のカテゴリ内のすべての製品とそのすべてのサブカテゴリが一覧表示されます。
上記はカテゴリ テーブルであり、製品テーブルは、関連付けられたカテゴリ テーブルの cate_id を決定するためのものです。製品が属するカテゴリ
ここで私が望む効果は、カテゴリをクリックして、現在のカテゴリ内のすべての製品とそのすべてのサブカテゴリをリストすることです
アドバイスをお願いします
再帰のことを考えると頭がおかしくなってしまいます。まだ?やり方は?
------解決策---------
カテゴリをクリックすると、カテゴリ番号がわかります
データベースをクエリすると、このカテゴリ番号を持つ親カテゴリ番号がそのサブカテゴリになります
------解決策------ --- --
データ量が多いかどうかはわかりません
中小企業の Web サイトの場合、親カテゴリ ID を取得した後、すべてのサブカテゴリ ID を見つけて結合します。 : 2,5,6 ,7,8 この種の
次に、product テーブルの SQL ステートメントに移動し、in キーワードを使用して使い方を確認し、検索してください...
わかりませんインデックスを使用できる場合は?
データ量が比較的大きい場合は、効率を高めるために冗長性を使用します。
分類テーブルにフロア フィールドを追加します。親カテゴリには 0、第 1 レベルのサブカテゴリには 2 を書き込みます。第 2 レベルのサブカテゴリ。 。 。
3 つのレベルの分類があると仮定し、製品テーブルに 3 つのフィールド (cate、cate1、cate2) を追加します
製品がどのサブカテゴリに属するかを、親からレベル 2 の子までの 3 つのフィールドすべてに入力します
フィルタリングする場合、受信した cateid に従って、最初にこのカテゴリのフロアを見つけてから、その上位カテゴリ ID をすべて見つけます
残りは、取得したすべての ID を条件としてフィルタリングすることです
ここにキーがあります、cate から cateN までのすべてを含む BTREE インデックスを構築します
方法 2 は、同じ量のデータではるかに高速ですが、その欠点は、サブカテゴリを移動するときに製品テーブルを変更する必要があることです
- ---- -解決策--------------------
これは簡単です。チェックを続けてください。
メイン カテゴリ ID からサブカテゴリをクエリし、サブカテゴリ ID から 3 番目のレベルをクエリし、3 番目のレベル ID から 4 番目のレベルをクエリします...
もちろん、サーバーの場合のみあなたはこの種の苦痛に耐えることができます。
無制限であろうとなかろうと、これは同じクエリです。近道はありません。
-----解決策---------