Mysql每周插入数据

时间:2016-06-25 16:46:27

标签: mysql sql

我的情况是有一个人和他/她的每周付款 每个人应该支付一定数额,比方说100,000。
如果他未能达到10万,那么它将持续到下周。
如果(s)他通过了100,000,则会减少下一周的金额 周从星期六开始。

我在想这样的设计。我知道这是错的。所以帮助我这个

my rough design

更新
此外,我需要标记该用户是否已支付本周的会费。所以要保持某种状态 我已经意识到也许我可以使用这个

来实现它
SELECT ROUND(DATEDIFF( CURRENT_DATE, "2010-01-04")/7, 0) AS weeksout

这意味着我可以开始计算日期并在支付表中使用我的索引。

-->id
-->week_no
-->start_date
-->end_date

付款

-->id
-->person_id
-->week_no
-->amount
-->date

PAYMENT_STATUS

-->person_id
-->week_no
-->status
-->balance
-->carry


使用Payment_status我可以跟踪周状态(付费,未付款,部分付费)。 我仍然对此感到不舒服,我不知道为什么。

1 个答案:

答案 0 :(得分:0)

我认为你可以使用以下表格结构

PERSON (ID,NAME,...,weekly_payment_amount)
PAYMENT (YEAR,MONTH,WEEK,PERSON_ID,AMOUNT);

对于每个星期,您都可以在付款方式中为所有人提供服务 因为周期如果人们已经完成了他的目标,他将有0美元,因为本周将会增加和完成的金额将会增加到下周 如果他为即将到来的一周完成额外的金额将会增加一个额外的部分

当您按照以下方式插入新的内容时,您必须处理代码级别的某些逻辑

$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);
    }
}