2011-12-08 17 views
0

親カテゴリを選択したときに、子カテゴリに割り当てられた商品を取得する最善の方法は何ですか?親子関係

つまりトップレベルのカテゴリを選択した場合、選択した現在のレベルに割り当てられた商品だけでなく、すべてのサブカテゴリのすべての商品を取得したいと考えています。

ので、あなたが探しているものをこのクエリでは、カテゴリー1はPROD_IDの1と2の選択カテゴリー2は、2

**category** 
id parent_id name 
1  0  Vegetables 
2  1  Tomatoes 
3  2  Yellow Tomatoes 

**product_category** 
prod_id cat_id 
    1  1 
    2  3 

**products** 
prod_id name 
    1  Carrot 
    2  Small Yellow Tomato 
+1

期待している結果のサンプル出力を表示できますか? – reggie

+0

question update above – user813720

+0

@ user813720カテゴリ1を選択すると、カテゴリ1または2(親カテゴリが1なので)の商品が返されるはずですが、カテゴリがあるprod_id 2 3 .. – SERPRO

答えて

1

PROD_IDに戻ります戻りますされて選択しますか?

$query =<<<MYSQL 
SELECT * 
FROM `produdcts` 
    INNER JOIN `produdct_category` ON `products`.`prod_id` = `produdct_category`.`prod_id` 
    INNER JOIN `category` ON `product_category`.`cat_id` = `category`.`id` 
WHERE `category`.`id` = {$selectedCatId} 
    OR `category`.`parent_id` = {$selectedCatId} 
MYSQL; 
+0

残念ながら私はparent_idだけcategory_idを知らない。 – user813720

+0

@ user813720私はあなたの新しい要求を見ています。 – SERPRO

+0

@ user813720私はあなたが探しているものと思っているもので答えを編集しました。 – SERPRO

0

は、テーブル名を修正して、あなたが最初に選択する必要があるフィールドを選択します。

$query =<<<MYSQL 
SELECT `prod_id` 
FROM `produdct_category` 
    INNER JOIN `category` ON `product_category`.`cat_id` = `category`.`id` 
WHERE `category`.`parent_id` = {$selectedParentId} 
MYSQL; 

は質問、更新の答えを更新しました。

SELECT * FROM `products` AS p 
INNER JOIN `product_category` AS pc ON p.id = pc.prod_id 
INNER JOIN `category` AS c ON pc.cat_id = c.id 
WHERE `parent_id` = YOUR_VALUE_HERE