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' –