테스트 사이트 - 개발 중인 베타 버전입니다

그룹별/회원별 조회 권한 관련한 sql 초급질문 채택완료

열심맨 4년 전 조회 3,127

안녕하세요. JavaScript, JSP, jQuery, MSSql로 웹 학습중입니다.

 

대분류DB

category  
code name
IT IT팀
IN 인프라팀
SY 시스템팀

 

소분류DB

report      
category_code code name auth
IT A A보고서 all
IN B B보고서 select
IN C C보고서 select
SY B B보고서 select
SY D D보고서 select

 

접근권한DB

auth      
categoty_code report_code dept_code staff_code
IN B IT01  
IN C   S001
SY B IT02  
SY D   S002

 

부서DB

dept
code
IT00
IT01
IT02

 

사원DB

Staff  
dept_code code
IT01 S001
IT01 S002
IT02 S003
IT02 S004

 

위와 같이 다섯개의 테이블이 있습니다.

사원코드 S001로 접근할때 select값

 => [{IT, IT팀, A, A보고서}, {IN, 인프라팀, B, B보고서}, {IN, 인프라팀, C, C보고서}]

사원코드 S002로 접근할때 select값

 => [{IT, IT팀, A, A보고서}, {IN, 인프라팀, B, B보고서}]

사원코드 S003로 접근할때 select값

 => [{IT, IT팀, A, A보고서}, {SY, 시스템팀, B, B보고서}, {SY, 시스템팀, D, D보고서}]

사원코드 S004로 접근할때 select값

 => [{IT, IT팀, A, A보고서}, {SY, 시스템팀, B, B보고서}]

 

위와같이 가져올수 있는 Select 문을 못짜겠습니다 ㅠㅠ 도와주세요..

 

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트

db modeling이 좀 난해하군요.

 

select b.category_code, d.name, b.code, b.name from staff a inner join auth b on a.code=b.staff_code

inner join report c on b.category_code=c.categor_code and b.report_code=c.code

inner join category d on b.category_code=d.code

union

select b.category_code, d.name, b.code, b.name from staff a inner join auth b on a.dept_code=b.dept_code

inner join report c on b.category_code=c.categor_code and b.report_code=c.code

inner join category d on b.category_code=d.code

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

열심맨
4년 전
감사합니다 저혼자 연습으로 만들어보고있어서요!ㅠㅠ
DB모델링 경험이 많이 없어서요.. 저는 위와같이 안짜고 훨씬 간단하게 완성했습니다!
DB모델링은 더 공부하겠습니다!

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인