Yo sé que este query esta muuy largo... pero esta muy digerido. Te da por usuario, roles, listas de permisos, rutas en el portal (inglés y español), menú y componente al cuál se tiene acceso.
SELECT AD.ROLEUSER, AC.ROLENAME, AC.CLASSID,
rtrim(ltrim(rtrim(ltrim(rtrim(ltrim(rtrim(ltrim(rtrim(ltrim(rtrim(ltrim(rtrim(ltrim( G.PORTAL_LABEL)) || ' > ' )) || rtrim(ltrim( F.PORTAL_LABEL)) || ' > ')) || rtrim(ltrim( E.PORTAL_LABEL )) || ' > ')) || rtrim(ltrim( D.PORTAL_LABEL)) || ' > ')) || rtrim(ltrim( C.PORTAL_LABEL)) || ' > ' )) || rtrim(ltrim( B.PORTAL_LABEL)) || ' > ')) || rtrim(ltrim( A.PORTAL_LABEL)) AS Ruta_Ingles,
rtrim(ltrim(rtrim(ltrim(rtrim(ltrim(rtrim(ltrim(rtrim(ltrim(rtrim(ltrim(rtrim(ltrim(GL.PORTAL_LABEL)) || ' > ' )) || rtrim(ltrim(FL.PORTAL_LABEL)) || ' > ')) || rtrim(ltrim(EL.PORTAL_LABEL )) || ' > ')) || rtrim(ltrim(DL.PORTAL_LABEL)) || ' > ')) || rtrim(ltrim(CL.PORTAL_LABEL)) || ' > ' )) || rtrim(ltrim(BL.PORTAL_LABEL)) || ' > ')) || rtrim(ltrim(AL.PORTAL_LABEL)) AS Ruta_Español,
A.PORTAL_URI_SEG1 AS Menu,
A.PORTAL_URI_SEG2 as Componente
FROM ((((((((
(PSPRSMDEFN A LEFT OUTER JOIN PSPRSMDEFNLANG AL
ON A.PORTAL_NAME = AL.PORTAL_NAME
AND A.PORTAL_REFTYPE = AL.PORTAL_REFTYPE
AND A.PORTAL_OBJNAME = AL.PORTAL_OBJNAME
) LEFT OUTER JOIN
(PSPRSMDEFN B LEFT OUTER JOIN PSPRSMDEFNLANG BL
ON B.PORTAL_NAME = BL.PORTAL_NAME
AND B.PORTAL_REFTYPE = BL.PORTAL_REFTYPE
AND B.PORTAL_OBJNAME = BL.PORTAL_OBJNAME
) ON A.PORTAL_PRNTOBJNAME = B.PORTAL_OBJNAME AND (A.PORTAL_NAME = 'EMPLOYEE' AND A.PORTAL_NAME = B.PORTAL_NAME )
) LEFT OUTER JOIN
( PSPRSMDEFN C LEFT OUTER JOIN PSPRSMDEFNLANG CL
ON C.PORTAL_NAME = CL.PORTAL_NAME
AND C.PORTAL_REFTYPE = CL.PORTAL_REFTYPE
AND C.PORTAL_OBJNAME = CL.PORTAL_OBJNAME
) ON B.PORTAL_NAME = C.PORTAL_NAME
AND B.PORTAL_REFTYPE = C.PORTAL_REFTYPE
AND B.PORTAL_PRNTOBJNAME = C.PORTAL_OBJNAME
AND B.PORTAL_NAME = C.PORTAL_NAME
) LEFT OUTER JOIN
(PSPRSMDEFN D LEFT OUTER JOIN PSPRSMDEFNLANG DL
ON D.PORTAL_NAME = DL.PORTAL_NAME
AND D.PORTAL_REFTYPE = DL.PORTAL_REFTYPE
AND D.PORTAL_OBJNAME = DL.PORTAL_OBJNAME
) ON C.PORTAL_NAME = D.PORTAL_NAME
AND C.PORTAL_REFTYPE = D.PORTAL_REFTYPE
AND C.PORTAL_PRNTOBJNAME = D.PORTAL_OBJNAME
AND C.PORTAL_NAME = D.PORTAL_NAME
) LEFT OUTER JOIN
(PSPRSMDEFN E LEFT OUTER JOIN PSPRSMDEFNLANG EL
ON E.PORTAL_NAME = EL.PORTAL_NAME
AND E.PORTAL_REFTYPE = EL.PORTAL_REFTYPE
AND E.PORTAL_OBJNAME = EL.PORTAL_OBJNAME
) ON D.PORTAL_NAME = E.PORTAL_NAME
AND D.PORTAL_REFTYPE = E.PORTAL_REFTYPE
AND D.PORTAL_PRNTOBJNAME = E.PORTAL_OBJNAME
) LEFT OUTER JOIN
( PSPRSMDEFN F LEFT OUTER JOIN PSPRSMDEFNLANG FL
ON F.PORTAL_NAME = FL.PORTAL_NAME
AND F.PORTAL_REFTYPE = FL.PORTAL_REFTYPE
AND F.PORTAL_OBJNAME = FL.PORTAL_OBJNAME
) ON E.PORTAL_NAME = F.PORTAL_NAME
AND E.PORTAL_REFTYPE = F.PORTAL_REFTYPE
AND E.PORTAL_PRNTOBJNAME = F.PORTAL_OBJNAME
) LEFT OUTER JOIN
(PSPRSMDEFN G LEFT OUTER JOIN PSPRSMDEFNLANG GL
ON G.PORTAL_NAME = GL.PORTAL_NAME
AND G.PORTAL_REFTYPE = GL.PORTAL_REFTYPE
AND G.PORTAL_OBJNAME = GL.PORTAL_OBJNAME
) ON F.PORTAL_NAME = G.PORTAL_NAME
AND F.PORTAL_REFTYPE = G.PORTAL_REFTYPE
AND F.PORTAL_PRNTOBJNAME = G.PORTAL_OBJNAME
) LEFT OUTER JOIN
(PSPRSMDEFN H LEFT OUTER JOIN PSPRSMDEFNLANG HL
ON H.PORTAL_NAME = HL.PORTAL_NAME
AND H.PORTAL_REFTYPE = HL.PORTAL_REFTYPE
AND H.PORTAL_OBJNAME = HL.PORTAL_OBJNAME
) ON G.PORTAL_NAME = H.PORTAL_NAME
AND G.PORTAL_REFTYPE = H.PORTAL_REFTYPE
AND G.PORTAL_PRNTOBJNAME = H.PORTAL_OBJNAME
) LEFT OUTER JOIN
(PSPRSMDEFN I LEFT OUTER JOIN PSPRSMDEFNLANG IL
ON I.PORTAL_NAME = IL.PORTAL_NAME
AND I.PORTAL_REFTYPE = IL.PORTAL_REFTYPE
AND I.PORTAL_OBJNAME = IL.PORTAL_OBJNAME
) ON H.PORTAL_NAME = I.PORTAL_NAME
AND H.PORTAL_REFTYPE = I.PORTAL_REFTYPE
AND H.PORTAL_PRNTOBJNAME = I.PORTAL_OBJNAME
),
PSPRSMPERM AB,
PSROLECLASS AC,
PSROLEUSER AD
where B.PORTAL_REFTYPE = 'F'
AND A.PORTAL_NAME = AB.PORTAL_NAME
AND A.PORTAL_REFTYPE = AB.PORTAL_REFTYPE
AND A.PORTAL_OBJNAME = AB.PORTAL_OBJNAME
AND AC.CLASSID = AB.PORTAL_PERMNAME
AND AC.ROLENAME = AD.ROLENAME
AND A.PORTAL_URI_SEG2 <> ' '
AND AD.ROLEUSER = 'VP1'
order by 1,4,2,3
Muy buena sentencia y muy útil... hace tiempo necesitaba algo así, finalmente lo tuve que resolver por medio de varias sentencias y reportes (SQR) y Application Engine... y una vez que tenia toda la información, la reunía en un Excel...Estas son el tipo de sentencias que se deben de quedar en la librería de utilerías de todo programador de PeopleSoft!!!
ResponderBorrar