데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.


안녕하세요, 프론트쪽 개발만 엄청 잠깐 배웠는데 갑자기 회사에서 sql+php를 하게 되었습니다.

sql 기초 문법 공부는 하고 있는데.... 테이블 자체를 수정해야 할 상황이 너무 빨리 생겨버렸네요.

h2로 테스트해봐도 계속 오류만 떨어지고 너무 막막해서 여쭤봅니다 ㅠㅠㅠ 제발 제발 제발 도와주세요 ㅠㅠ


아래 맨 처음에 보이는 것이 table 구조입니다, 36개의 컬럼으로 구성되어 있고요,

// table 구조
rid | reg_id | name | DOB | gender | email | phone | curriculum | education | major | experience | introduction
| graduation_certificate | grade_certificate | experience_certificate1 | experience_certificate2 | register_date
| register_ip | stage1_pass | stage1_pass_date | stage2_pass | stage2_pass_date | stage3_pass | stage3_pass_date
| curriculum2 | etc_document | modify_date | modify_ip | undergrad_school | undergrad_major | undergrad_status
| grad_school | grad_major | grad_status | grad_course | final_student


제가 수정해야 하는 컬럼은 stage1_pass, stage1_pass_date, stage2_pass, stage2_pass_date, stage3_pass, stage3_pass_date 입니다.

원래는 이렇게 아래 코드가 실행이 되면 각 컬럼에 값이 아래처럼 바뀌는 구조였습니다


491         $value_field = 'stage'.$stage.'_pass'; // 

492         $time_field = $value_field.'_date';

493 

494         $sql = '

495             UPDATE '.REG_TABLE.'

496             SET

497                 '.$value_field.' = "'.$conn->escape_string($pass).'",

498                 '.$time_field.' = NOW()

499             WHERE reg_id = "'.$conn->escape_string($reg_id).'"

500         ';


그런데 이번에 1단계 즉, stage1_pass에서 불합격이 되면 ("N"값) 알아서 2단계, 3단계 (stage2_pass, stage3_pass)도 불합격 값이 들어가고

pass_date도 한 번에 다 당시 시간으로 바꿔서 값을 집어 넣으라고 하시더라고요.

UPDATE '.REG_TABLE.'
// 1단계 불합격했다 -> 2,3단계 자동으로 불합격 표시 + 결정된 시간도 같이 표시
// 1단계 합격 + 2단계 불합격 -> 3단계 자동으로 불합격 표시 + 결정된 시간도 같이 표시
// 3단계만 불합격 -> 3단계에만 불합격 표시 + 결정된 시간도 같이 표시


// 3단계 합격,불합격 여부 (Y/N)을 수정하려고 함
SET '.stage3_pass.' =
// 2단계가 불합격했을 경우 (N)
CASE WHEN '.stage2_pass.' = '.N.'
// 1단계도 불합격했는지 다시 확인하고
THEN CASE WHEN '.stage1_pass.' = '.N.'
// 그렇다면 3단계도 확실히 불합격 값으로 채움
THEN '.N.'
// *** 그리고 이때! 합격, 불합격 여부 결정난 time도 다시 now()로 하고 싶다
// 기타 경우에는 3단계 원래 값 그대로 가지고 있어라
ELSE '.stage3_pass.' END,
// 2단계 합격, 불합격 여부 수정
SET '.stage2_pass.' =
// 1단계 불합격했다면
CASE WHEN '.stage1_pass.' = '.N.'
// 2단계는 불합격 값으로 채움
THEN '.N.'
// ** 그런데 이때 3단계도 자동으로 불합격 값으로 채워야 하는데 어떻게 중첩하지?
// ** 2,3단계 중첩해서 다 불합격 채우고 나서 time도 다시 now()
ELSE '.stage2_pass.' END,
WHERE reg_id = "'.$conn->escape_string($reg_id).'"


여기까지 짠 상황인데요, 주석 다 빼도 h2.sh에서 테스트해볼 때 계속 오류만 납니다, 

invalid하다고 하는데 어디가 문제인지 못 찾고 있습니다 ㅠㅠ 


1. stage3_pass를 업데이트할 때 time도 set을 해야 할텐데.... set 안에 set이 들어갈 수 있나요?

2. stage2_pass를 업데이트할 때 stage3도 또 set하고, time도 set해야 한다고 생각했는데.. 그러면 set이 3번이나 중첩되는데요, 가능한가요? ㅠㅠ


CASE문이 아니라 if문으로 해야 하는 것인지...... 

어떤 힌트, 조언이라도 주신다면 정말 감사하겠습니다!!!!! ㅠㅠㅠ




















<style type="text/css"> p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #ffffff; background-color: #000000} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #ecec15; background-color: #000000} p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #28f0ef; background-color: #000000} p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #ff3cff; background-color: #000000} span.s1 {font-variant-ligatures: no-common-ligatures; color: #6ce2ff} span.s2 {font-variant-ligatures: no-common-ligatures} span.s3 {font-variant-ligatures: no-common-ligatures; color: #ffdddd} span.s4 {font-variant-ligatures: no-common-ligatures; color: #ecec15} span.s5 {font-variant-ligatures: no-common-ligatures; color: #28f0ef} span.s6 {font-variant-ligatures: no-common-ligatures; color: #8cffb4} span.s7 {font-variant-ligatures: no-common-ligatures; color: #ffffff} span.s8 {font-variant-ligatures: no-common-ligatures; color: #ff3cff} </style><style type="text/css"> p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #ffffff; background-color: #000000} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #ecec15; background-color: #000000} p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #28f0ef; background-color: #000000} p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #ff3cff; background-color: #000000} span.s1 {font-variant-ligatures: no-common-ligatures; color: #6ce2ff} span.s2 {font-variant-ligatures: no-common-ligatures} span.s3 {font-variant-ligatures: no-common-ligatures; color: #ffdddd} span.s4 {font-variant-ligatures: no-common-ligatures; color: #ecec15} span.s5 {font-variant-ligatures: no-common-ligatures; color: #28f0ef} span.s6 {font-variant-ligatures: no-common-ligatures; color: #8cffb4} span.s7 {font-variant-ligatures: no-common-ligatures; color: #ffffff} span.s8 {font-variant-ligatures: no-common-ligatures; color: #ff3cff} </style>
No. Subject Author Date Views
9852 sql 스튜디오에서요? [4] 문상연 2017.05.26 2019
» 조건 쿼리문을 중첩해서 a값이 결정되면 b값도 같은 값을 넣고 싶습니다 [4] 디알못 2017.05.25 1968
9850 쿼리 조건절 조건문 문의 드립니다. [5] DDolx2e 2017.05.25 2652
9849 쿼리좀 봐주세요 [6] 문상연 2017.05.24 2276
9848 특정 컬럼에 값만큼 행 증가 시킬수있을까요?? [3] 고구망 2017.05.23 2919
9847 프로시져 호출시 변수를 배열로.. [2] 슬이슬이 2017.05.22 1841
9846 이런것도 프로시저로 되나요? [2] 문상연 2017.05.22 1764
9845 동일테이블 내에 조회후 업데이트 쿼리 질문 [1] 무마뭉 2017.05.21 2232
9844 sql 쿼리 문의 드립니다. [1] 규니깨비 2017.05.19 1750
9843 [재질문] 년도의 주차구하는 쿼리;; [2] 기타치는퐝동 2017.05.19 3042
9842 2008 과 2012 따로 사용가능한가요? [3] 가마우지 2017.05.18 1915
9841 쿼리좀 만들어주세요 [2] 문상연 2017.05.18 2015
9840 프로시저 내 프로시저 실행에 대한 문의 [4] 상아미 2017.05.17 4096
9839 해당일의 주차 구하는 방법 질문 [2] 기타치는퐝동 2017.05.17 3616
9838 프로시져에서 쿼리를 여러번 날릴수 있나요? [5] 문상연 2017.05.17 2359
9837 데이타 삭제에 관해서...? 문상연 2017.05.17 1875
9836 mssql -> mysql이관 질문입니다. goblin 2017.05.16 1944
9835 조회 쿼리에 대해서..:? [2] 문상연 2017.05.16 2008
9834 테이블을 옮길때...? [6] 문상연 2017.05.15 1671
9833 MS SQL 2014 EXPRESS 버전 사용하려고 합니다. 조언 좀 부탁드립니다. [1] 이재홍 2017.05.15 1937





XE Login