-4

私は2つのテーブルを持っていますtbl_users(id,role_id,username)tbl_roles(id,role_name)

role_name から role_name = user に対応する ID をフェッチしてrole_id、ユーザー名を更新する必要があります。tbl_users

このために、最初に where role_name="user"from テーブルからrole_id を取得し、tbl_roles次に tbl_users で role_id を設定する2 つのクエリを実行username="username"しています。

私のモデル関数:- ここで 2 つのクエリを実行しており、これを 1 つのクエリで実行できるかどうかを尋ねています。

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

次のような 1 つのクエリで実行できます。

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 に答える