表:
USER(有一个布尔值告诉我们它是用户还是个人资料)(nombre是PK)
nombre is_user
pedro 1
P_Facturacion 0
P_Administracion 0
REL_USERPROFILE(用户及其个人资料之间的关系)(由用户名和个人资料名称组成的PK)
Pedro P_Facturacion
Pedro P_Administracion
DUTY(职责有多个配置文件,在示例中只有一个。)(id autoincremental PK)
Facturar P_Facturacion
Administrar P_Administracion
MATRIX(矩阵有两个有风险的职责。这使用职责ID如FK和矩阵PK是一个自动增量)
Facturar Administrar Critical(risk)
好吧,我必须选择所有具有dutys风险的配置文件的用户。 为了更好地解释它,我需要在此示例中选择所有具有与职责Facturacion和administracion相关的配置文件的用户。
结果示例是。 Pedro Facturar Administrar严重
谢谢!
答案 0 :(得分:0)
SELECT
primerset.conflicto,
primerset.operador1,
primerset.duty1,
primerset.P1,
segundoset.duty2,
segundoset.P2,
primerset.criticidad,
primerset.descripcion
FROM
((SELECT Rel_Operador_Perfil.operador AS 'operador1', Rel_Operador_Perfil.sucursal_operador as 'sucursal1', Duty.nombre AS 'duty1', Matriz.criticidad AS 'criticidad',
Matriz.conflicto AS 'conflicto', Rel_Duty_Perfil.perfil as 'P1', Matriz.descripcion as 'descripcion'
FROM (Rel_Operador_Perfil
INNER JOIN Rel_Duty_Perfil ON Rel_Operador_Perfil.Operador_Perfil = Rel_Duty_Perfil.perfil
INNER JOIN Duty ON Rel_Duty_Perfil.idduty = Duty.id
INNER JOIN Matriz ON Duty.id = Matriz.duty1 ))AS primerset
INNER JOIN
(SELECT Rel_Operador_Perfil.operador as 'operador2',Rel_Operador_Perfil.sucursal_operador as 'sucursal2', Duty.nombre AS 'duty2', Rel_Duty_Perfil.perfil as 'P2'
FROM(Rel_Operador_Perfil
INNER JOIN Rel_Duty_Perfil ON Rel_Operador_Perfil.Operador_Perfil = Rel_Duty_Perfil.perfil
INNER JOIN Duty ON Rel_Duty_Perfil.idduty = Duty.id
INNER JOIN Matriz ON Duty.id = Matriz.duty2 )) AS segundoset
ON primerset.operador1 = segundoset.operador2)
GROUP BY primerset.operador1, primerset.duty1, segundoset.duty2, primerset.conflicto, primerset.criticidad,primerset.P1,segundoset.P2,primerset.descripcion
ORDER BY primerset.operador1`enter code here`
这是我的解决方案,但只有在矩阵的职责之间只有1个关系时才有效。 当我有多个关系时,它会向我显示交叉风险用户..示例
我说 结算与交付处理 销售订单处理与开票该工具显示Billing vs Billing to。