데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
담당자 변경 이력으로 작업 시간대를 파악하는 쿼리 인데요
먼저 테이블을 말씀드리면
아래 2개 테이블을 보고
몇시 부터 몇시 까지 누가 담당했는지를 파악할 수 있는 쿼리가 필요합니다..
시간은 모두 datetime 형식이구요..
작업 테이블 | |||
key | 시작시간 | 종료시간 | 최종 사용자 |
keyA | 1:00 | 2:00 | 담당자A |
keyB | 1:30 | 2:00 | 담당자B |
담당자 변경이력 테이블 | |||
key | 변경시간 | 이전 사용자 | 변경 사용자 |
keyA | 1:10 | 담당자A | 담당자B |
keyA | 1:20 | 담당자B | 담당자C |
keyA | 1:30 | 담당자C | 담당자A |
결과는 아래와 같이 나와야 하는데 어떻게 해야할지 모르겠어요..
검색을 해보고 싶어도 뭐라고 검색해야 할지도 모르겠고요..
아이디어 좀 주시면 감사드리겠습니다.
시간대별 담당자 내역 | |||
key | 시작시간 | 종료시간 | 사용자 |
keyA | 1:00 | 1:10 | 담당자A |
keyA | 1:10 | 1:20 | 담당자B |
keyA | 1:20 | 1:30 | 담당자C |
keyA | 1:30 | 2:00 | 담당자A |
keyB | 1:30 | 2:00 | 담당자B |
---------------------------------------------------------------
지금까지 해보고 있는데요. 여기서 막히네요...ㅠ
쿼리
select A.key, A.시작시간, A.종료시간, A.최종사용자, B.변경시간, B.이전사용자, B.변경사용자
from 작업 A
left join 변경이력 B on A.key = B.key
union
select A.시작시간, A.종료시간, A.최종사용자, null, null, null
from 작업 A
order by A.KEY, 변경시간
결과
key | 시작시간 | 종료시간 | 최종 사용자 | 변경시간 | 이전 사용자 | 변경 사용자 |
keyA | 1:00 | 2:00 | 담당자A | 1:10 | 담당자A | 담당자B |
keyA | 1:00 | 2:00 | 담당자A | 1:20 | 담당자B | 담당자C |
keyA | 1:00 | 2:00 | 담당자A | 1:30 | 담당자C | 담당자A |
keyA | 1:00 | 2:00 | 담당자A | |||
keyB | 1:30 | 2:00 | 담당자B |
Comment 1
-
거북님
2017.03.03 09:31
비효율적인 DB구조를 변경하는 방법은 어떤게 있을까요?