나는 당신이 그 것이다 PERSON 자신의 목표를 완료 할 수 없습니다 경우 해당 WEEK 기간 동안 지불 표 의 모든 PERSON에 대한 항목이 각 주에 테이블 구조
PERSON (ID,NAME,...,weekly_payment_amount)
PAYMENT (YEAR,MONTH,WEEK,PERSON_ID,AMOUNT);
다음과 같이 GO 수 있다고 생각 당신의 INSERTING 새 항목 WAY는 다음의 IT 작업을 수행 할 때 그 일부를 처리해야 IT가 추가 PART
있는 항목을 추가 할 것입니다 다가오는 주 동안 추가 금액을 COMPLETE 경우 0 그 주에 대한 금액 완성 금액은 NEXT WEEK 에 추가됩니다 논리 형식 코드 수준
$AMOUNT = WORKED AMOUNT FOR THIS WEEK
CHECK IF ANY VALUE AVALABLE FOR THAT WEEK
$AMOUNT_EXP= SELECT weekly_payment_amount FROM PERSON WHERE PERSON_ID ="";
$AMOUNT_ADD= SELECT IFNULL(AMOUNT,0) AS FROM PAYMENT WHERE YEAR="" AND MONTH="" AND WEEK="" AND PERSON_ID ="";
IF ($AMOUNT_ADD>0) THEN {
IF $AMOUNT_EXP> $AMOUNT_ADD+ $AMOUNT THEN {
UPDATE PAYMENT SET AMOUNT= 0 WHERE YEAR="", MONTH="", WEEK="", PERSON_ID ="";
INSERT INTO PAYMENT(YEAR,MONTH,WEEK,PERSON_ID,AMOUNT) VALUES (<YEAR,MONTH,WEEK FOR NEXT WEEK>,$AMOUNT_ADD+ $AMOUNT);
}
ELSE {
UPDATE PAYMENT SET AMOUNT=$AMOUNT_EXP WHERE YEAR="", MONTH="", WEEK="", PERSON_ID ="";
INSERT INTO PAYMENT(YEAR,MONTH,WEEK,PERSON_ID,AMOUNT) VALUES (<YEAR,MONTH,WEEK FOR NEXT WEEK>,($AMOUNT_ADD+ $AMOUNT)-$AMOUNT_EXP);
}
}
ELSE {
IF $AMOUNT_EXP> $AMOUNT_ADD+ $AMOUNT THEN {
INSERT INTO PAYMENT(YEAR,MONTH,WEEK,PERSON_ID,AMOUNT) VALUES (<YEAR,MONTH,WEEK FOR CURRENT WEEK>,0);
INSERT INTO PAYMENT(YEAR,MONTH,WEEK,PERSON_ID,AMOUNT) VALUES (<YEAR,MONTH,WEEK FOR NEXT WEEK>,$AMOUNT_ADD+ $AMOUNT);
}
ELSE {
UPDATE PAYMENT SET AMOUNT=$AMOUNT_EXP WHERE YEAR="", MONTH="", WEEK="", PERSON_ID ="";
INSERT INTO PAYMENT(YEAR,MONTH,WEEK,PERSON_ID,AMOUNT) VALUES (<YEAR,MONTH,WEEK FOR NEXT WEEK>,($AMOUNT_ADD+ $AMOUNT)-$AMOUNT_EXP);
}
}
stmts 만 삽입하십시오. 업데이트가 없습니다. 이 것은 Sarbanes Oxley 준수 afterall해야합니다 : p – Drew
당신이 말하는 것을 이해하지 못합니다 –
그것의 유효한 n 번째 정규화 된 구조. 날짜 계산에 의존하는 경우 주 테이블없이 작업을 수행 할 수 있습니다. 내 추측으로는 분기 별 또는 연간 균형 등을 보는 것과 같이 일주일을 넘는 다른 용도가있을 수 있기 때문에 날짜 디멘션을 고려해야 할 것입니다. – Matt