2011-12-08 127 views
0

當選擇父類別時,獲取分配給子類別的產品的最佳方式是什麼?親子關係

即即使如果我選擇頂級類別,我希望獲得所有子類別中的所有產品,而不僅僅是分配給所選當前級別的產品。

所以選擇1類將返回PROD_ID 1和2。選擇2類將返回PROD_ID 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

以上的問題更新 – user813720

+0

@ user813720我不明白,如果您選擇類別1 ..它應該返回產品類別1或2(因爲父類別是1)..但你說它返回prod_id 2,它有類別3 .. – SERPRO

回答

1

是這個查詢,你在找什麼?

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

更新的問題,更新的答案:

$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我會看看你的新requeriments .. – SERPRO

+0

@ user813720我編輯答案與我認爲是你在找什麼.. – SERPRO

0

正確的表名,並選擇您需要先選擇字段。然後做這樣的事情:

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