I want to find the navigation path using only a Component name.
Simple SQL
SELECT LEVEL0.PORTAL_LABEL || ' > ' || LEVEL1.PORTAL_LABEL || ' > ' || LEVEL2.PORTAL_LABEL || ' > ' || level3.PORTAL_LABEL PATH_TO_COMPONENT FROM PSPRSMDEFN level3 , PSPRSMDEFN level2 , PSPRSMDEFN level1 , PSPRSMDEFN LEVEL0 WHERE level3.PORTAL_URI_SEG2 = "Your Component Name" AND level3.PORTAL_PRNTOBJNAME = level2.PORTAL_OBJNAME AND level2.PORTAL_PRNTOBJNAME = level1.PORTAL_OBJNAME AND level1.PORTAL_PRNTOBJNAME = LEVEL0.PORTAL_OBJNAME AND level3.PORTAL_NAME = level2.PORTAL_NAME AND level2.PORTAL_NAME = level1.PORTAL_NAME AND level1.PORTAL_NAME = LEVEL0.PORTAL_NAME;
The next one is actually better.
SELECT REPLACE(navigation,'',' > ') "PIA Navigation" , url , MENU_NAME , COMPONENT_NAME , portal_objname , portal_prntobjname , portal_uri_seg3 , portal_label FROM (SELECT SYS_CONNECT_BY_PATH (a.portal_label,'>>') navigation , '/EMPLOYEE/ERP/c/' || a.portal_uri_seg1 || '.' || a.portal_uri_seg2 || '.' || a.portal_uri_seg3 url , a.portal_uri_seg1 MENU_NAME , a.portal_uri_seg2 COMPONENT_NAME , a.portal_objname portal_objname , a.portal_prntobjname portal_prntobjname , a.portal_uri_seg3 portal_uri_seg3 , a.portal_reftype portal_reftype ,a.portal_label portal_label FROM (SELECT DISTINCT a.portal_name , a.portal_label , a.portal_objname , a.portal_prntobjname , a.portal_uri_seg1 , a.portal_uri_seg2 , a.portal_uri_seg3 , a.portal_reftype FROM psprsmdefn a WHERE portal_name = 'EMPLOYEE' AND portal_objname <> portal_prntobjname AND NOT EXISTS (SELECT 'X' FROM psprsmsysattrvl WHERE portal_name = a.portal_name AND portal_reftype = a.portal_reftype AND portal_objname = a.portal_objname AND portal_attr_nam = 'PORTAL_HIDE_FROM_NAV' AND a.portal_objname NOT IN ('CO_NAVIGATION_COLLECTIONS','PORTAL_BASE_DATA')))a WHERE portal_uri_seg2 LIKE "Your Component Name" START WITH a.portal_prntobjname = 'PORTAL_ROOT_OBJECT' CONNECT BY PRIOR a.portal_objname = a.portal_prntobjname) WHERE navigation NOT LIKE '%Navigation Collections%' ;
No comments:
Post a Comment