2016-12-05 85 views
2

我是編程新手,我正在嘗試將主類別和子類別顯示爲樹狀圖。當選擇主類別時,顯示子類別的複雜查詢

帶類別的菜單已創建。現在,當我點擊主要類別名稱來加載分配給此主要類別的所有子類別中的所有產品時,我都想要。問題是我不明白如何構建我的查詢。

在我的表格類別中,我存儲了主要貓和子貓。當我將子類別添加到某個主類別時,我將主類別ID存儲在parentID列下。

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 = 1它應該顯示我的產品ID爲1和2,因爲他們被分配到sub-cat這是分配給主貓1

此查詢我試過

$masterCategory = '426'; 
$query="SELECT * from products 
LEFT JOIN categories on categories.categoryID = products.categoryID 
WHERE products.categoryID in (" . $masterCategory ."0)"; 

我應該得到2個產品,當我在catid=426點擊,因爲我已經添加到潛艇兩款產品被分配到catid=426 ...產品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中添加參數。

回答

2

嘗試使用下面的查詢:

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>; 

其中CATID是你必須通過主ID。 我用上面給出的數據模擬了這一點,我得到了我期望的結果。

ID productID Name  parentID 
426 2   sub-cat 2 426  
426 1   sub-cat 426 
+0

感謝您的回答,但它返回空行'MySQL返回了一個空的結果集(即零行)。 (查詢花費了0.0043秒。)' – VLS

+0

更新了答案,請參閱 –

+0

這應該可行,但前提是您擁有一個子類別的級別。如果你有更多的關卡,myslq本身並不是一個很好的解決方案。 – Seb