3

我在使用此数据结构模型的类别中有一个表。还可以使用另一个表来显示类别分支的路径:

**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/

可以从叶子咨询吗?

4

1 回答 1

0

您可能应该在路径字段中分解描述的数据。使用这样的东西:

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

等等...

然后你可以这样做:

SELECT * FROM t_category_path WHERE id = 4

于 2013-07-17T15:57:48.560 回答