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

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 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
9867 csv 문의 드립니다. [1] goblin 2017.06.06 2229
9866 중복된 데이터(중복값)이 있을경우 1씩증가. 중복되지 않으면 1로 데이터 추출 방법 [1] 꽃보다서준 2017.06.05 2417
9865 영문 어순 관계없이 비교 [2] skytuner 2017.06.05 1403
9864 SQL Injection 해킹 방어 문의 [1] embster 2017.06.05 1809
9863 merge 문 사용 관련 문의 [3] 나는짱이야 2017.06.01 2491
9862 union 에 order by 를 각각 지정할수 있나요? [6] 문상연 2017.06.01 2296
9861 조건절에서 질문이잇습니다 [2] 문상연 2017.05.31 1852
9860 RAISERROR 질문 [2] 후알유? 2017.05.31 1821
9859 인덱스를 거는 요령? [4] 문상연 2017.05.30 2072
9858 동일 그룹 내 특정 조건 제거하는 쿼리문 [3] ㅁㄴㄴㄴ 2017.05.30 1569
9857 DB의 호환성을 2008에서 2014로 마이그레이션 작업 할 때 질문이요 Lubee 2017.05.29 1967
9856 테이블 쿼리 한번 봐주세요 [1] 에스큐에엘 2017.05.28 1473
9855 "MSDAORA"이(가) 메시지 "메모리가 부족합니다 [2] 랄뽀 2017.05.26 2672
9854 MSSQL 2012 intellisense 기능이 되지 않습니다. [2] l1j2e3 2017.05.26 1847
9853 경우의 수 - 근사치 구하기 쿼리 질문 [4] 민경진영아빠 2017.05.26 4107
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 2275
9848 특정 컬럼에 값만큼 행 증가 시킬수있을까요?? [3] 고구망 2017.05.23 2785





XE Login