-4

我有两张桌子tbl_users(id,role_id,username)tbl_roles(id,role_name)

我必须通过从role_name 中获取与role_name = user 对应的id来更新role_id用户名。tbl_users

为此,我做了两个查询,首先role_name="user"从表的 where 中获取 role_id tbl_roles,然后username="username"在 tbl_users 中设置 role_id。

我的模型函数:- 我在这里做两个查询,并询问是否可以在一个查询中完成。

function dropModerator($username) {
        $this->db->select('role_id');
        $this->db->where('role_name',"User");
        $role_id = $this->db->get('tbl_roles');
        foreach($role_id->result() as $value)
            $role = $value->role_id;
        $sql = "UPDATE tbl_users SET role_id='$role' WHERE username='$username'";
        return $this->db->query($sql);
    }

同样,我想这样做是因为,这会使我的程序在运行时变慢,我想在单个查询中执行它以快速获得输出。

4

1 回答 1

2

您可以在一个查询中执行此操作,如下所示:

UPDATE  tbl_users 
SET     role_id = ( SELECT  Role_ID
                    FROM    tbl_Roles
                    WHERE   Role_Name = 'user' 
                    )
WHERE   username = '$username'
于 2012-08-01T07:51:44.487 回答