【问题标题】:How to change a field value to NULL when there is a change in another field using mysql当使用mysql的另一个字段发生更改时如何将字段值更改为NULL
【发布时间】:2012-11-22 10:12:09
【问题描述】:

我是 mysql 的新手。谁能帮我解决这个问题,

“我的表中有以下列 emp id,name,leaveto,leavefrom 和 status。如果员工申请休假,他的经理可以接受或拒绝。如果经理接受了休假,那么提交的状态将包含值为 Approved (与拒绝相同)。我想知道的是员工第二次申请休假时 leaveto 和 leavefrom 列更新但状态字段保持不变。“

当 leaveto 和 leavefrom 列有更新时,是否可以将状态字段设置为 NULL。

这将通过比较员工的 ID 和经理 ID 来更新员工的状态字段(批准/拒绝)。如果该员工属于经理“A”,那么只有经理“A”可以批准/拒绝它。

"UPDATE leave_details join managerlogin on managerlogin.manager_id=leave_details.manager_id SET leave_details.leave_status='Approved' where (employee_id='$myemployee_id' and managerlogin.manager_id= '".$_SESSION['mymanager_id']."' )";

【问题讨论】:

  • 你能把你的代码贴在这里吗...

标签: mysql database


【解决方案1】:

是的,可以将值更新为 NULL。

Update tablename set columnname=null where put your condition...

【讨论】:

  • 问题是,只有当 leaveto 和 leavefrom 列值发生变化时(即下次员工申请休假时),我才需要将其设为 NULL
  • 您应该为每个假期创建一个单独的行。在这种情况下,您将获得员工休假的历史记录。如果您更新该行,那么您将没有任何休假历史。因此,当员工想请假时,应该使用新的 leaveid 创建一个新行。状态值应该是挂起的。当经理批准请假时,使用以下查询更新状态:Update leave set status='approved' where leaveid=put here the newleave id
【解决方案2】:

你可以

update mytable
set status = null,
    leaveto = ...
where emp_id = 17;

【讨论】:

    【解决方案3】:

    这是为Satatus设置NULL的代码

    UPDATE mytable SET status = null WHERE empid = '17'
    

    试试看……


    把条件放在更新之前

    if($_POST['leavefrom'] || $_POST['leaveto'])
    {
        $status == "NULL";
    }
    
    UPDATE mytable SET status = '$status' WHERE empid = '17'
    

    通过使用这个条件,你可以在leavefrom和leaveto有值时将Null值设置为Status。

    【讨论】:

    • leavefrom和leaveto列发生变化时,如何将状态改为NULL?
    • 一旦员工申请休假,他们的状态应该是NULL..在这里有人被批准后。我是对的..?
    • 是的,当经理批准时,状态变为“已批准”。如果员工再次申请请假,则请假和请假列会更改,但状态字段不会更改。它仍然批准第二次休假。相反,它还应该将其值更改为 NUll 并等待经理批准。 (否则员工会认为他申请的新休假被批准了。)
    猜你喜欢
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-22
    • 2021-01-15
    相关资源
    最近更新 更多