안녕하세요, 프론트쪽 개발만 엄청 잠깐 배웠는데 갑자기 회사에서 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
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 36239
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 18818
9863 merge 문 사용 관련 문의 [3] 나는짱이야 2017.06.01 2586
9862 union 에 order by 를 각각 지정할수 있나요? [6] 문상연 2017.06.01 2649
9861 조건절에서 질문이잇습니다 [2] 문상연 2017.05.31 1950
9860 RAISERROR 질문 [2] 후알유? 2017.05.31 1942
9859 인덱스를 거는 요령? [4] 문상연 2017.05.30 2160
9858 동일 그룹 내 특정 조건 제거하는 쿼리문 [3] ㅁㄴㄴㄴ 2017.05.30 1672
9857 DB의 호환성을 2008에서 2014로 마이그레이션 작업 할 때 질문이요 Lubee 2017.05.29 2038
9856 테이블 쿼리 한번 봐주세요 [1] 에스큐에엘 2017.05.28 1556
9855 "MSDAORA"이(가) 메시지 "메모리가 부족합니다 [2] 랄뽀 2017.05.26 2819
9854 MSSQL 2012 intellisense 기능이 되지 않습니다. [2] l1j2e3 2017.05.26 1922
9853 경우의 수 - 근사치 구하기 쿼리 질문 [4] 민경진영아빠 2017.05.26 4821
9852 sql 스튜디오에서요? [4] 문상연 2017.05.26 2091
» 조건 쿼리문을 중첩해서 a값이 결정되면 b값도 같은 값을 넣고 싶습니다 [4] 디알못 2017.05.25 2071
9850 쿼리 조건절 조건문 문의 드립니다. [5] DDolx2e 2017.05.25 2733
9849 쿼리좀 봐주세요 [6] 문상연 2017.05.24 2355
9848 특정 컬럼에 값만큼 행 증가 시킬수있을까요?? [3] 고구망 2017.05.23 4271
9847 프로시져 호출시 변수를 배열로.. [2] 슬이슬이 2017.05.22 1914
9846 이런것도 프로시저로 되나요? [2] 문상연 2017.05.22 1822
9845 동일테이블 내에 조회후 업데이트 쿼리 질문 [1] 무마뭉 2017.05.21 2313
9844 sql 쿼리 문의 드립니다. [1] 규니깨비 2017.05.19 1807





XE Login