我有一个嵌套集模型如下。
HOME
MUSIC
GUITAR
KEY BOARD
RADIO
FURNITURE
BDD
TABLE
BOOKS
BIBLE
Godfather
我的问题是查询如何在父级中显示子元素? 例如。
将父级MUSIC, FURNITURE, BOOKS
列为HOME
将父级GUITAR,KEY BOARD, RADIO
列为MUSIC
我尝试了以下查询
select * from elements where lft between 1 and 22 order by lft asc
用于选择第一个父母子女,但它返回整个列表。
任何人都可以帮助我吗?
提前致谢
表结构看起来像
-------+-------------------+------------+----------
id | cat_name | lft | rgt
-------|-------------------+------------+----------
1 | HOME | 1 | 22
答案 0 :(得分:1)
这会给你你想要的东西:
SELECT
c.cat_name
FROM
tree_struc t
JOIN
tree_struc c
ON c.lft BETWEEN t.lft + 1 AND t.rgt - 1
LEFT JOIN
tree_struc a
ON a.lft BETWEEN t.lft + 1 AND t.rgt - 1
AND c.lft BETWEEN a.lft + 1 AND a.rgt - 1
WHERE t.cat_name = 'Music' AND a.id IS NULL;
答案 1 :(得分:-1)
在我看来,最好的方法是执行以下操作,使用:p_parent_id作为替换变量,它保存类别的ID,您要检索的子项:
select * from elements where parent_id = :p_parent_id