我在使用此数据结构模型的类别中有一个表。还可以使用另一个表来显示类别分支的路径:
**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/
我想要的是获取任何项目的父母列表。例如,如果我搜索" dog"得到"狗,吉祥物"如果我搜索"杜宾犬"应该得到"杜宾犬,狗,吉祥物"
我尝试了这个......但是反过来,我的意思是寻找父母得到的叶子:
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 :(得分:0)
您应该在路径字段中分解描述的数据。使用这样的东西:
id | depth | parent
4 2 3
4 1 1
3 1 1
3 2 3
等...
然后你可以这样做:
SELECT * FROM t_category_path WHERE id = 4