プログラミングに慣れていません。現在メインカテゴリ+サブカテゴリをツリーとして表示しようとしています。メインカテゴリが選択されたときにサブカテゴリを表示する複雑なクエリ
カテゴリのメニューは既に作成されています。ここで、メインカテゴリ名をクリックして、このメインカテゴリに割り当てられたすべてのサブカテゴリのすべての商品を読み込むとします。問題は、私のクエリを構築する方法を理解していないということです。
私のテーブルカテゴリでは、私はメインのネコとサブネコの両方を保存しています。メインカテゴリにサブカテゴリを追加すると、メインIDカテゴリの下にメインカテゴリIDが格納されます。私はなめるとき
例
ID Name parentID
426 Main Cat 0
427 sub-cat 426
428 sub-cat 2 426
429 Main cat 2 0
製品テーブルだからcategoryID
列
productID categoryID
1 427
2 428
3 429
を持ってmaincatID =彼らはあるsub-cat
に割り当てられているので、それは私に、ID 1と2を備えた製品を示すべき1メインの猫1に割り当てられました
catid=426
に割り当てられている潜水艦に追加した2つの製品を持っているので、私は
catid=426
をクリックしたとき、私は2つの製品を取得する必要があり
$masterCategory = '426';
$query="SELECT * from products
LEFT JOIN categories on categories.categoryID = products.categoryID
WHERE products.categoryID in (" . $masterCategory ."0)";
...製品1及び2
問題は、私は、4-を持っているということです5つの空の製品NULL
すべて..これは正しくありません。
Var_dump($query);
リターン
SELECT * from products
LEFT JOIN categories on categories.categoryID = products.categoryID
WHERE products.categoryID in (427,428,426,0)
var_dump($masterCategory);
リターン
string(12) "427,428,426,"
注:私は、パラメータ化クエリについて、それを読みました。私はSQLのパラメータをテスト目的のために追加しました。 CATIDはあなたが合格しなければならない主なIDである
SELECT a.ID,c.productID,b.Name,b.parentID
FROM categories a JOIN categories b
ON(a.ID=b.parentID)
JOIN products c
ON(b.ID=c.categoryID)
WHERE a.ID=<catid>;
:
回答ありがとうございますが、空の行を返します。MySQLは空の結果セット(つまり、ゼロ行)を返しました。 (クエリには0.0043秒かかりました) ' – VLS
答えを更新しました。 –
を参照してください。これはうまくいくはずですが、サブカテゴリのレベルが1つしかない場合に限ります。より多くのレベルがある場合、myslqだけではこれには適していません。 – Seb