같은 레코드의 필드로 계산하여 같은 레코드의 필드에 저장하려면...

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
같은 레코드의 필드로 계산하여 같은 레코드의 필드에 저장하려면...

QA

같은 레코드의 필드로 계산하여 같은 레코드의 필드에 저장하려면...

본문

13929-bdaa77d13020010f905c21430ee8d739.jpg
 

정말 대단히 죄송합니다. 초보인 저로써는 실력이 안되어 이렇게 질문만 드리네요...

아직 해결이 안되어서 다시한번 질문을 올리니 고수님들 양해부탁드립니다.


다름이 아니오라..

모집인 수당을 계산해서 reservation 이라는 디비에 위처럼 담았습니다. 아주 뿌듯했었습니다..

근데 모집인 수당이 변경될 경우가 생기드라구요..

모집인 수당은 멤버테이블에 저장됩니다. %로 저장 되지요. 모집인 수당을 변경 저장 때 업데이트 파일에서 reservation의 디비에 이미 저장되어 있는 모집인 수당을 같이 동시에 변경하려 합니다. 이미 %를 통하여 계산된 가격이기 때문에 이걸 다시 계산하여야합니다..

그려려면요...

위의 레코드를 본다면.. makeup의 필드 값이 전부 다릅니다.

그래서 각 레코드의 값들을 계산하여 동일한 레코드의 Re_cancle 필드에 저장코자합니다.

그 다음 레코드는 처음레코드와 값이 다르기 때문에 또 다른 값이 Re_cancle필드에 저장이 되겠지요.


다시말씀드리면....

각 레코드별로

makeup * makeup_day * class_ea = Re_cancle 이런식으로 계산되어야 합니다.

( 같은 필드값만 가지고 계산한다면 간단하겠지만 cf_1에 기본설정 값과 할인률 등등 값고 올 함수값이 많아요.)


첫번째 레코드의 makeup * makeup_day * class_ea * $cf1[0](수당률) = Re_cancle

두번째 레코드의 makeup * makeup_day * class_ea * $cf1[0](수당률) = Re_cancle

세번째 레코드의 makeup * makeup_day * class_ea * $cf1[0](수당률) = Re_cancle

.

.

.


이렇게 저장 시킬려고 합니다.

그래서 아래처럼해보니까...


1)

$fee_rate=sql_fetch("select makeup, class_ea, tch_fee from g4_write_reservation where tch_di = '{$_POST[mb_id]}' ");

=> reservation의 각 makeup, class_ea, tch_fee 값을 레코드별로 불러왔습니다. 레코드별로 다르기 때문에요...


2)

$re_cal = $fee_rate[makeup]*$fee_rate[class_ea]*$cf1[0] ;

=> 계산을 해서 $re_cal 함수에 값을 담았습니다.


3)

sql_query("update g4_write_reservation set Re_cancle='$re_cal' where tch_di='$_POST[mb_id]'");

=> 다시 reservation 테이블의 해당 레코드의  Re_cancle 필드에 각각 담습니다.


레코드별로 각각 갖고 잇는 필드의 값으로 계산되어 저장이 되어야 할텐데... 그렇지 않더군요... 1)번의 $fee_rate 쿼리가 각각의 레코드별로 값을 불러와야 되는데... 맨 최근의 것 1개만 불러와서 똑 같은 값을 그대로 Re_cancle에 담게 되네요.. 각각 레코드별로 필드에 저장된 값이 다르거든요.. 그래서 각각 다른 값들을 계산해서 저장해야되는데...ㅠㅠ 하나의 값이 모두 똑같이 저장됩니다.


물론 고수님들은 다른 방법을 가지고 계실듯 싶습니다. 하지만 각각 레코드별로 필드 값을 함수화하여 계산시켜 레코드별 특정필드 값을 업데이트 시키는 이유는... 2)번 $re_cal 에 계산하는 방식이 조금은 복잡한 계산입니다..ㅠㅠ 예시는 간단하게해놓았습니다.


질문이 어수선해서 고수님들이 이해하셨나 모르겠네요..ㅠㅠㅠ 

부디 해결하도록 도와주시기 바랍니다..

부탁드립니다.

이 질문에 댓글 쓰기 :

답변 2

sql_query, sql_fetch, sql_fetch_array
이것은 그누에 사용자 정의 함수고요

mysql_query, mysql_fetch_array 이것은 php 내장 함수에요
맞나??? 그누에 너무 익숙해졌어 ㅠㅠ


이 사용법을 익히세요
sql_fetch는 데이터 한개만 가지고 와요

이런 것은 전체적인것이 이해 되야 가능한데요.

보통   쿼리로 하지 이걸 쿼리에서 데이터를 빼와서 프로그램으로 계산한다는 것 자체가
DB 설계를 잘 못하신거에요..

그러니 복잡할 수밖에 없고 프로그램으로 계산하면 속도도 엄청 느리고요..

보통 어떤 테이블에 값이 변경 될 경우 다른 테이블에 영향을 줘야 한다면
트리거를 이용하셔야 하는데요.

그누에 게시판 로직으로 작업 해야하는 것들은 아주 간단한 것들만 하셔야 해요.

여러가지 조인 하고 뭐하고 그런것은 절대 안되요.

게시판은 게시판일뿐이에요

지금 보시면 잘 하시는 것 같은데요.

게시판 가지고 프로그램으로 하려니 안되는 것이에요..

작업이 얼마나 진행 되었는지 모르겠지만
DB  설계부터 차근차근 하세요.

DB설계 잘 못하시면 프로그램 만들때 엄청 고생해요.

DB 연동 프로그램이여서 DB를 어떻게 만드냐에  1시간 걸릴수 있고 10일걸릴수 있고 그래요.

그리고 이런 것은 한 부분만 보여주면 문제 해결 안되요.
계속 질문하시게 될거에요.

DB 설계를 정확하게 하지 않으셨으면 그냥 계속 한건 한건씩 for문 돌려서
무한 쿼리 만드시면 되요.

그것도 방법이지만..... 속도가......
답변을 작성하시기 전에 로그인 해주세요.
전체 10,635
QA 내용 검색

회원로그인

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