테이블 정보는 다음과 같습니다:
테이블 2개 : table test1, table test2
컬럼(필드) :
table test1 - b_number, title, make_name, year1, year2, year3, sp_book, c_no(join 값)
table test2 - auth_name, auth_name_year, c_title, g_no, c_no(join 값)
위에서도 언급했지만, c_no값이 두 테이블을 연결하는(조인하는) 컬럼입니다.
이해하기 쉽게 테이블 test1을 책 제목을 입력하는 테이블로, 테이블 test2를 책에 있는 세부 목록을 입력하는 테이블로 이해하시면 편하겠습니다.
test1에 초기 입력 시 책제목(title), 출판사(make_name), 출판년도 등을 입력하는데(year1), year2와 year3는 미입력 상태입니다.
test2에서는 해당 책에 대한 저자(auth_name), 저자 출생년도(auth_name_year), 소제목(c_title) 등을 입력합니다.
test1에서는 한 권의 책에 대해 한 번 입력이 원칙이지만, 예외적으로 책의 분량 상 2번 이상으로 입력하는 경우도 있습니다.
만약 한 권의 책을 임의로 2권으로 나누었다면, 테이블에 2번을 입력하게 됩니다. 제목을 입력하는 형태는 다음과 같습니다.
(예 : XXXX(2-1), XXXX(2-2)...)
만약 동일한 책을 나누어 입력하면 첫 번째 sp_book값은 1이 되고, 두 번째 sp_book값은 2가 되고, 레코드는 2개가 됩니다.
책을 나누어 입력했지만, 결국 동일한 책을 분량상 임의로 나누어 입력한 것이므로 DB상에서는 같은 책으로 인식합니다.
즉, sp_book값만 다르고 b_number값은 동일합니다.
다시 정리하자면, 전체 두 권의 책이 있다고 가정했을 때, 하나는 책의 분량상 두개로 나누어 입력을 해야하고(XXXX(2-1), XXXX(2-2)),
한 권은 나누지않고 입력할 경우, 총 table1에서의 레코드 수는 3개가 됩니다.
테이블 구조는 다음과 같습니다.
<test1>
b_number title make_name year1 year2 year3 sp_book c_no(table2와 join 값)
-----------------------------------------------------------------------------------------------------
0001 제목1(2-1) OOO 2000 null null 001 001
0001 제목1(2-2) OOO 2000 null null 002 002
0002 제목2 XXX 2010 null null 001 003
<test2>
auth_name auth_name_year c_title g_no c_no(table1과 join 값)
------------------------------------------------------------------------------------
저자1 19600423 생활1 001 001
저자2 19740817 생활2 002 001
저자3 19690711 생활3 003 001
저자4 19710609 생활4 004 002
저자5 19750715 생활5 005 002
저자6 19670227 생활6 006 003
여기서 질문 드리겠습니다.
test1에서 b_number값이 0001인 year2값에 test2에 있는 auth_name_year값 중 '1960(저자출생년도 최소값 중 앞 4자리)'을 year2값에,
'1975(저자출생년도 최대값 중 앞 4자리)'을 year3에 넣고, b_number값이 0002인 year2값에는 test2에 있는 '1967', year3값에는 '1967'값을 넣고 싶습니다. 즉, test1에서의 b_number값이 같으면 year2와 year3에 동일한 값을 넣고자 합니다.
쿼리나 프로시저로 가능할 지 궁금합니다.
답변주시면 감사하겠습니다.^^
Comment 1
-
건우아빠
2014.10.16 09:18
<test2> 을 참조하는 규칙이 없이 무조건 년도로 넣는것은 좀...
조인 조건과 year2 , year3 에 어떤 규칙의 값이 들어가는가가 나와야 쿼리가 가능 할듯 합니다.