2012-08-09 120 views
3

我在我使用這個數據結構模型的類別中有一個表。另外用另一個表格來顯示分類的路徑:Mysql Adjancency:獲取葉的所有父母

**t_category** 
id | name | parent 
------------------ 
1 mascot null 
2 cat  1 
3 dog  1 
4 doberman 3 

**t_category_path** 
id | path 
------------------ 
1 /1/ 
2 /1/2/ 
3 /1/3/ 
4 /1/3/4/ 

我想要的是獲取任何項目的父母的列表。例如,如果我搜索「狗」獲得「狗,吉祥物」,如果我搜索「杜賓犬」應該得到「杜賓,狗,吉祥物」

我試過這個......但它是相反的,我的意思是尋找父母們的葉子:

SELECT 
    c2.id, 
    c2.name, 
    p.path 
FROM t_category c, t_category c2, t_category_path p, t_category_path p2 
WHERE c.id = 1 
AND p2.id = c.id 
AND p.path LIKE(CONCAT(p2.path,'%')) 
AND c2.id = p.id 
ORDER BY p.path ASC; 

,顯然得到:

id | name | path 
------------------ 
1 mascot /1/ 
2 cat  /1/2/ 
3 dog  /1/3/ 
4 doberman /1/3/4/ 

,但我從 「杜賓犬」 希望獲得:

id | name | path 
------------------ 
1 mascot /1/ 
3 dog  /1/3/ 
4 doberman /1/3/4/ 

是否可以從葉子諮詢?

回答

0

您應該打出路徑字段中描述的數據。使用這樣的事情:

id | depth | parent 
4 2  3 
4 1  1 
3 1  1 
3 2  3 

等...

然後,你可以這樣做:

SELECT * FROM t_category_path WHERE ID = 4