디비 레코드를 모두다 일괄 업데이트 하려면?

디비 레코드를 모두다 일괄 업데이트 하려면?

QA

디비 레코드를 모두다 일괄 업데이트 하려면?

본문

dd.jpg
 
소스설명을 드리자면...
이 디비명은 reservation디비이고요... tch_di가 모집인 아이디입니다. 저 디비를 저장할때 모집인 아이디와 모집인의 수당(tch_fee)를 계산하여 저장토록 해놓았어요.. 즉, 필요한 데이터는 reservation 디비에 자알 저장됩니다.
 
근데요..
모집의 수당을 변경(멤버테이블)하려해요.. 변경하면 기존에 예약되어있는 reservation의 수당금액을 모조리 변경해야하거든요...물론 변경하는 곳은 다른 곳에서 즉, 회원관리 업데이트(멤버테이블)에서 수정합니다. 물론 수정도 정상적으로 됩니다.
 
따라서.. 회원관리 업데이트에서 모집인의 수당을 변경할때... 이곳 디비(reservation)에서도  모집인 수당(tch_fee)를 모조리 수정해야해요. 즉, 회원관리 업데이트에서 모집인수당변경시, 멤버테이블에서는 모집인 수당변경... reservation 디비에서는 tch_fee 변경이 같이 되어야 된다는 거죵...
 
여기까지가 한계라서 고수님께 문의드려요....
아래는 회원관리(멤버테이블) 업데이트 시, 모집인 수당 변경시 들어가는 소스구요. 모집인수당은 정상 변경되면서 이와 관련된 reservation 디비의 모집인 수당을 모오조리~~~ 변경하는게 질문요지입니다..
 
###########################################################
//회원관리 업데이트시 변경하고자하는 모집인, 즉 넘어온 id와 reservation의 tch_di와 같은 레코드의 makeup, class_ea, tch_fee를 뽑아라.
$fee_rate=sql_fetch("select makeup, class_ea, tch_fee from g4_write_reservation where tch_di = '{$_POST[mb_id]}' ");
 
// 다시 계산하여라. 레코드마다 makeup 값이 필드별로 값이 다르기때문에 해당 레코드의 필드 값을 가져와야합니다.
$re_cal = $fee_rate[makeup]*$fee_rate[class_ea] ; //계산식은 이게 아니라 차후 다시 짜야합니다. 일단 되는지 안되는지 확인차 테스트로 계산해봄.
 
//새로 계산된 값을 넘어온 mb_id와 reservation의 tch_di와 같은 reservation 디비 레코드의 tch_fee 필드에 모조리~~~ 업데이트 하여라.
sql_query("update g4_write_reservation set tch_fee='$re_cal' where tch_di='$_POST[mb_id]'");
############################################################
 
당연히 안되겠죠.. 찍어보면, $fee_rate[makeup]과 $fee_rate[class_ea] 값이 안나옵니다..ㅠㅠ 거기서부터 잘못되었죠..ㅠㅠ
여기까지가 비전문가의 한계네요...
고수님 제발 좀 도와주세요.... 부탁드립니다.
 
 
 

이 질문에 댓글 쓰기 :

답변 4

쪽지 온거 보고 여기에 답변 답니다.
다른 사람도 봐야되니깐............


// 회원정보에서 tch_fee (모집수당) 을 가져옴.
$row = sql_fetch("SELECT tch_fee FROM {$g4['member_table']} WHERE mb_id = '{$_POST['mb_id']}' ");

// g4_write_reservation tch_fee  업데이트
sql_query("UPDATE g4_write_reservation SET tch_fee = '{$row['tch_fee']}' WHERE tch_di = '{$_POST['mb_id']}' ");

답변 대단히 감사드립니다... 행복하세요..

질문한것처럼은 안되나보네요...
같은 레코드의 필드 정보를 뽑아내는 법은 없는가보네요..
단순히 회원정보의 수당을 가져오는건 아닌데 말이죠..ㅠㅠ

네... 맞습니다.. 멤버디비랑은 상관읍서요...ㅠ
멤버디비에서 끌어올꺼는 모드다 reservation 디비에 저장되어잇거든요..
reservation 필드의 저장된 내용 makeup을 가지고 계산해서 reservation디비의 tch_fee 필드에 필드별로 각각 담는 거예용,...ㅠㅠ
자세한내요은 쪽지드렷습니다.

판매수당 같은데....
이런 구조가 되면 안될거 같은데요.


판매원의 등급은 
일반, 골드, VIP 가 있다고 예를 들면.

회원유치수당은
1명당 일반 100원
골드 500원
VIP 1,000원
이라고 하면....

A판매원은 일반등급입니다.

A 판매원이 회원 10명을 유치하면 수당이 1,000원이 되겠지요.
그런데 이 판매원의 실적이 좋았습니다.
그래서 GOLD 로 등급을 올리게 되면
기존 유치수당을 소급적용할것이냐..
등급이 올라간 날부터 유치한 건에 대해서만 인정할것이냐......

이게 정해져야겠죠?
알찬돌뼈님이 도와주셔서 해결하였습니다.
알찬돌뼈님께 다시한번 감사의 말씀드립니다.
 
혹시 저와 같은 소스가 필요하신 분이 계실가봐  이곳에 소스를 남겨놓습니다.
여태껏 디비에 조건을 줘서 업데이트 하면 그 조건에 맞는 것은 모조리 같은 내용으로 업데이틀 했습니다.
근데 필요했던것은 조건에 업데이틀 줄때.. 그 레코드의 필드를 이용해서 계산을 한 후.. 다시 그 레코드의 다른 필드에 그 값을 업데이트 하는거죠.. 그림으로 설명하자면...

              makeup  |  makeup_day  |  tch_fee
----------------------------------------------
레코드1      20      |          30        |      5000
레코드2      40      |          20        |      1500
레코드3      21      |          30        |      5100
레코드4      14      |          20        |      5300
  .
  .
  .

여기서
레코드 1에서 20 * 30 한 값을 5000이라는 걸 지우고 600으로 업데이트
레코드 2에서 40 * 20 한 값을 1500이라는 걸 지우고 800으로 업데이트
레코드 3에서 21 * 30 한 값을 5100이라는 걸 지우고 630으로 업데이트

이런식으로 각각의 레코드의 필드 값을 가지고 각각의 tch_fee에 업데이트를 하는 겁니다.
 
이에대한 코딩은 전문가 답게 짧고 굵게 한방으로 아래처럼 알찬돌뼈님이 해주셨습니다.
 
// 기본키값이 wr_id 입니다.
// 그누보드 게시판을 변형한거면 wr_id 가 키값이 되는게 맞습니다.
$rs = sql_query("select wr_id, makeup, makeup_day from $reserve_table where wr_good='0' and tch_di = '{$_POST['mb_id']}' and  DATE_FORMAT( CONCAT(rdate,' ',rtime) ,'%Y-%m-%d %H:%i:00')>'$g4[time_ymdhis]'");
while ($fee_rate = sql_fetch_array($rs)) {
//계산을 합니다.
$re_cal = $fee_rate[makeup] * $fee_rate[makeup_day];
//업데이트를 합니다.
sql_query("update $reserve_table set tch_fee= '{$re_cal}'  where wr_id = '{$fee_rate['wr_id']}' AND tch_di = '{$_POST['mb_id']}' ");
}
초보라서 하루를 고민했었는데 단 몇분만에 도와주셔서 대단히 감사드립니다..
답변을 작성하시기 전에 로그인 해주세요.
전체 10,639
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT