다음과 같은 상황이 있으며이를 해결하는 방법을 잘 모릅니다. 필요한 견해를 준비하는 방법에 대한 지침은 크게 감사하겠습니다.SQL 결합 자 테이블에서 유니온보기
내가 4 개 테이블이 있습니다
사용자 (사용자 ID INT, 사용자 이름 VARCHAR)
역할 (역할 ID의 INT, rolename의 VARCHAR)
BusinessUnit의 (buid의 INT, buname의 VARCHAR)
user_role_map을 (사용자 ID, 역할 ID, buid)
역할 테이블에는 "시스템 관리자"역할 인 id가 0 인 역할이 있으며 businessunit 테이블에는 IT 비즈니스 단위가 있습니다. 아래 쿼리로 인해 생성 된 사용자는 시스템 관리자로 간주되며 모든 비즈니스 단위에 대한 모든 액세스 권한을 가져야합니다.
SELECT userid FROM user_role_map WHERE roleid = 0 AND buid = 0
나는 모든 사업 단위마다 "시스템 관리자"사용자의 목록에 union'd 모든 "비 시스템 관리자"를 표시하는보기를 구축 할 필요가있다. 첫 번째 부분은 아래 쿼리에서 쉽지만 두 번째 부분은 내가 고심하고있는 부분입니다. 내가 달성하기 위해 노력하고 무엇을 설명하는 데 도움이되는 몇 가지 예를 들어 데이터를 제공합니다
SELECT userid, roleid, buid FROM user_role_map WHERE roleid > 0 AND buid > 0
:
users
---------------
1, "sysAdmin"
2, "salesUser1"
3, "serviceUser1"
4, "manager1"
5, "salesUser2"
6, "serviceUser2"
7, "manager2"
roles
---------------
0, "SystemAdmin"
1, "Full"
2, "Update"
3, "Read"
BusinessUnit의 을 --------------- 0 "IT" 1 "fooSales" 2 "fooService" 3 "barSales" 4 "barService"0
1,233,747,716,292,219,273,872,613,210마지막으로, 내가 (마지막 4 개 행을 참고) 위의 샘플 데이터를 다음 제공하는 뷰가 필요합니다
new view
---------------
2, 1, 1
2, 3, 3
3, 1, 2
3, 3, 4
4, 1, 1
4, 1, 2
5, 1, 3
5, 3, 1
6, 1, 4
6, 3, 3
7, 1, 2
7, 1, 4
1, 1, 1
1, 1, 2
1, 1, 3
1, 1, 4
참고 : 예제 데이터 여기 만이 하나의 "시스템 관리자"사용자 만 이 유형의 사용자는 여러 명일 수 있습니다.
안녕 souplex, 제안에 대한 감사하지만 1 사용자의 "시스템 관리자와이 내가 제공하는 명시 적으로 예를 들어이 단지 작품 "System Admin"사용자 수에 무제한으로이 작업이 필요합니다. – Aossey
스토어드 프로 시저로 만들고 사용자 테이블에 가입하고 역할 ID를 매개 변수화 할 수 있습니다. – souplex