2013-06-30 55 views
0

試圖讓產品在樹上下幾個級別......這不起作用。從孩子類別中選擇MYSQL

選擇Products * FROM Products

  LEFT JOIN `Product_Categories` C 
       ON `Products`.`Category_ID` = C.`ID` 
       OR `Products`.`Sub_Category_ID` = C.`ID` 
       OR `Products`.`Sub_Category2_ID` = C.`ID` 

      LEFT JOIN `Product_Categories` C2 
       ON  C.`ID` = C2.`Parent_ID` 

      LEFT JOIN `Product_Categories` C3 
       ON  C2.`ID` = C3.`Parent_ID` 

      LEFT JOIN `Product_Categories` C4 
       ON  C3.`ID` = C4.`Parent_ID` 

      LEFT JOIN `Product_Categories` C5 
       ON  C4.`ID` = C5.`Parent_ID` 

      LEFT JOIN `Product_Categories` C6 
       ON  C5.`ID` = C6.`Parent_ID` 

      WHERE  `Products`.`Is_Master_Product` = 'Yes' 
       AND  `Products`.`Is_Published` = 'Yes' 
       AND  (`Products`.`Category_ID` = '29' 
         OR  `Products`.`Sub_Category_ID` = '29' 
        OR  `Products`.`Sub_Category2_ID` = '29') 
      GROUP BY `Products`.`Name` 
      ORDER BY `Products`.`Name` ASC 
+0

這是怎麼回事? –

+0

不返回任何產品。 29類沒有任何直接產品,但58類確實有產品。類別58的Parent_ID = 29 –

+0

。 。你能展示一些樣本數據和預期結果嗎? –

回答

-1

給表模式,樣本數據。 也許存儲過程會更好嗎?

+1

這適合作爲評論,但不能作爲答案。 –

0
SELECT `Products`.* 
      FROM  `Products` 

      LEFT JOIN `Product_Categories` C 
       ON `Products`.`Category_ID` = C.`ID` 
       OR `Products`.`Sub_Category_ID` = C.`ID` 
       OR `Products`.`Sub_Category2_ID` = C.`ID` 

      LEFT JOIN `Product_Categories` C2 
       ON  C.`ID` = C2.`Parent_ID` 

      LEFT JOIN `Product_Categories` C3 
       ON  C2.`ID` = C3.`Parent_ID` 

      LEFT JOIN `Product_Categories` C4 
       ON  C3.`ID` = C4.`Parent_ID` 

      LEFT JOIN `Product_Categories` C5 
       ON  C4.`ID` = C5.`Parent_ID` 

      LEFT JOIN `Product_Categories` C6 
       ON  C5.`ID` = C6.`Parent_ID` 

      WHERE  `Products`.`Is_Master_Product` = 'Yes' 
       AND  `Products`.`Is_Published` = 'Yes' 
       AND  (C.`Parent_ID` = '$category_ID' 
        OR C.`ID` = '$category_ID') 
      GROUP BY `Products`.`Name` 
      ORDER BY `Products`.`Name` ASC