Unit_num = 회원번호
Name = 이름
C_num = 검사번호
Age = 나이
Sex = 성별
Sp_name = 검사 이름
Sp_value1 = 검사 결과 값
1 회원 테이블 MEMBER
Unit_num, Name
2 검사 기본 테이블 CHECK_INFO
Unit_num, C_num, Age, Sex
3 검사 결과값 테이블 CHECK_3
Unit_num, C_num, Sp_name, Sp_value1
MEMBER 테이블 의 Unit_num 는 유니크 합니다.
검사 를 등록 할 때 회원 번호 를 가져와서, 검사 기본 테이블 과, 검사 결과값 테이블 에
Unit_num, C_num 로 매칭되서 등록이 됩니다.
CHECK_INFO 테이블 에 Unit_num, C_num(검사번호) 으로 하나의 게시물이 등록이 됩니다.
CHECK_3 테이블 에는 Unit_num, C_num(검사번호) 으로 여러개 의 게시물이 등록이 됩니다.
검색을 하고 있는데 회원테이블 ,검사기본 테이블 을 Unit_num 로 조인 하고
다시 검사 기본 테이블의 C_num 로 검사 결과값 테이블 을 조인 합니다.
기준값이 Unit_num 이기 때문에 결과값 테이블 이 여러개 이더라도 하나의 리스트 만 출력 해야 합니다.
그래서 group by 로 묶었는데 문제는 리스트 는 하나로 출력 되더라도..
검사 결과 값 테이블에 여러개의 열이 있으면 모두 가져와서 보여줘야 하는겁니다.
검사 결과 테이블에 3개의 리스트가 있다면 3개 다 가져 와야 합니다( 리스트는 1개 일수도 여러개 일 수도 있습니다.)
회원번호, 이름, 나이, 성별, 검사번호, 검사이름, 검사결과 값
=========================================================================================================
0001, 홍길동, 20살, 남자, C0001, 검사이름1, 검사결과 값1, 검사이름2, 검사결과 값2, 검사이름3, 검사결과 값3
select Max(A.Unit_num), Max(Name), Max(Age), Max(Sex), max(Sp_name), Max(Sp_value1) from member A join check_info b on A.Unit_num = B.Unit_num
join CHECK_3 C on B.c_num = C.c_num Where 1=1
--AND 추가될 검색 조건
Group By A.Unit_num
일렇게 출력 하면 하나의 리스트 만 나옵니다.
저렇게 CHECK_3 에 여러개의 리스트가 있을 경우 옆으로 쭉 다 가져오고 싶습니다.
CHECK_3 의 내용을 id별 검사항목에 순서를 부여 합니다.
이 순서를 가지고
case when 으로 분리하시거나 pivot을 거시면 되구요..
물론 검사항 고정된 형태가 아니라 동적이라면 동적 쿼리를 이용하셔야 합니다.
동적쿼리, 피벗으로 검색하시면 충분히 작성 가능 하실겁니다.