1
我有一个菜单表,我很努力地选择没有孩子的所有父母菜单。查询没有孩子的父母
SELECT
CASE
WHEN (SELECT COUNT(1) children
FROM menu
WHERE cod_idiom = 'EN'
START WITH cod_menu_parent = m1.cod_menu
CONNECT BY PRIOR cod_menu = cod_menu_parent) = 0 THEN
cod_menu
END x
FROM menu m1
WHERE m1.isSubMenu = 'T'
* isSubMenu ='T'表示它可能(应该)有孩子,可能是子菜单或文件。
这个想法是首先查询所有的子菜单,得到他们的菜单代码,然后做一个CONNECT BY PRIOR来计数它的孩子。
上述查询没有预期的效果,你们有什么想法吗?
从技术上讲,'isSubMenu'是一个派生字段,它通常在更规范化的数据库中不被赞同;你可能希望删除它,或者被迫保持同步(不是一个漂亮的任务)。此外,字段名称听起来像是属于关系的另一边(即它是一个子字段,而不是它们)。如果您对该字段的使用描述是正确的,请考虑将名称更改为'hasSubMenu' –