2010-04-20 3 views
0

나는 지혜가있다. 나는 미친 듯이 수색을하고 많은 데이터베이스 교과서를 읽었으며 하나님은 얼마나 많은 온라인 가이드, 블로그 및 포럼을 알고 계십니다. 누군가 나를 비참하게 만들 수 있습니까?SQL? "사용자 X가 수행 할 수있는 모든 활동을 보여주십시오."

PseudoSchema Diagram (경고 :!. 예쁜, 형식도 원격으로 ER 다이어그램 접근하지 않지만 기본 키는 굵게, 외래 키는 이탤릭체이다), 권한에 사용자를 그룹에 관련된 테이블 위의 설정을 감안할 때

및 각자 수행 할 수있는 권한이 필요한 활동 세트는 어떻게 알 수 있습니까?

사용자 X가 수행 할 수있는 모든 활동을 표시하십시오. 사용자 X는 그룹 G의 구성원입니다. 및 F; 그룹 G 및 F는 특권 P, Q, R 및 S와 상관 관계가있다; P, Q, R 또는 S 권한이 필요한 모든 활동을 보여주십시오.

어떻게하면 되나요?

답변

1
SELECT DISTINCT Activity.id, Activity.name, Activity.description 
    FROM Activity 
    INNER JOIN Privilege ON Activity.requires_privilege = Privilege.id 
    INNER JOIN Group ON Privilege.group_id = Group.id 
    INNER JOIN UserGroup ON Group.id = UserGroup.group_id 
WHERE UserGroup.user_id = :X 

원하는 것을 얻으세요. 다른 대안이 있습니다.

0
select a.* 
from user u 
inner join usergroup ug on u.id = ug.user_id 
inner join privilege p on ug.group_id = p.group_id 
inner join activity a on p.id = a.requires_privilege 
where u.name = 'X' 
관련 문제