如何加入两个表ID并验证特定字段?

时间:2015-12-18 17:16:12

标签: sql codeigniter

对于fuorviant标题感到抱歉,但我会尝试解释我正在尝试做什么。所以,我有两个表ea_usersea_user_settings

ea_users - STRUCTURE

id  | data|
5 | 0

ea_user_settings - STRUCTURE

|id | username|
 5    Sandokan

现在我要做的是验证系统中是否已存在某些用户名。表ea_users包含id,表示单个用户的iddata字段(0用户未删除,1用户删除)。
ea_user_settings表中,我已经完成了用户的所有设置。现在可以考虑检查某个用户名是否已存在:

public function validate_username($username, $user_id)
{
    $num_rows = $this->db->get_where('ea_user_settings',
        array('username' => $username, 'id_users <> ' => $user_id))->num_rows();
    return ($num_rows > 0) ? FALSE : TRUE;
}

这个函数有两个参数:usernameuser_id,将要插入的usernameuser_id(如果这是有价值的意味着我实际上是保持更新用户,所以如果用户名已存在,我不需要检查行。 实际上一切正常,但我想检查username是否仅存在于数据等于0的用户,如果数据为1则用户名可用'因为它被删除。我不知道情况是否更清楚。我如何在单个查询中实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情

public function validate_username($username, $user_id)
{
        $num_rows =
        $this->db->select('*')
        ->from('ea_user_settings')
        ->join('ea_users', 'ea_user_settings.id_users = ea_users.id', 'left')
        ->where(array('ea_user_settings.username' => $username, 'ea_user_settings.id_users <> ' => $user_id, 'ea_users.data' => 1))
        ->get();
        return ($num_rows->num_rows() > 0) ? 'We have this username and it was deleted!' : 'This username was not deleted';
}