2014-10-18 5 views
0

내 db 쿼리를 codeigniter 활성 레코드으로 변환하려고하는데 올바른 방법으로 올바르게 작동하지 않는 것 같습니다.조인 테이블이 작동하지 않습니다

내가 뭘 잘못하고있어. 당신이 가입에 대한 잘못된 구문을 통과 한 것처럼

Error 
Error Number: 1066 
Not unique table/alias: 'user_group' 
SELECT * FROM (`user_group`, `user`) JOIN `user_group` ON WHERE `ug`.`user_group_id` IS NULL AND `u`.`user_id` = '1' 
Filename: C:\Xampp\htdocs\codeigniter-project\system\database\DB_driver.php 
Line Number: 330 

모델

public function getUser($user_id) { 
    $this->db->select('*', 'ug.user_group', 'u.user'); 
    $this->db->from($this->db->dbprefix . 'user_group'); 
    $this->db->join('user_group'); 
    $this->db->where('ug.user_group_id'); 
    $this->db->from($this->db->dbprefix . 'user'); 
    $this->db->where('u.user_id', $user_id); 
    $query = $this->db->get(); 

    if ($query->num_rows() > 0) { 
     return $query->result_array(); 
     return true; 
    } else { 
     return false; 
    } 
} 

올드 모델 방법

public function getUser1($user_id) { 
    $query = $this->db->query("SELECT *, (SELECT ug.name FROM `" . $this->db->dbprefix . "user_group` ug WHERE 
    ug.user_group_id = u.user_group_id) 
    AS user_group FROM `" . $this->db->dbprefix . 
    "user` u WHERE u.user_id = '" . (int)$user_id . "'"); 

    return $query->row_array(); 
} 

답변

0

보인다. 아래 코드로 시도하십시오.

$this->db->select('user.*,user_group.name as user_group'); 
$this->db->from('user'); 
$this->db->join('user_group','user.user_group_id = user_group.user_group_id'); 
$this->db->where('user.user_id', $user_id); 
$query = $this->db->get(); 

이 검색어로 오류/문제가 계속 발생하는 경우 알려주세요.

희망이 도움이 될 것입니다.

+0

나는 그것을 시도했지만 지금은 'on clause'에있는 알 수없는 'user_group_id.user_group_id'열 –

+0

이전 모델 방식의 쿼리가 작동 했습니까? 그렇다면 user_group_id를 user 및 user_group 테이블에서 사용할 수 있는지 확인하십시오. 또는 두 테이블 모두에서 조인 할 열 이름을 알려주시겠습니까? –

+0

그래도 수동으로 모델 사용자 그룹 열 이름 user_group_id, 이름, 사용 권한 –

0

아마도 아래에서 시도해 볼 수 있습니다 .. "PHP Weblineindia"의 답변은 거의 동일하지만 db 접두사를 놓친 것입니다.

$this->db->select('u.*, ug.name AS user_group'); 
$this->db->from($this->db->dbprefix . 'user u'); 
$this->db->join($this->db->dbprefix . 'user_group ug', 'ug.user_group_id = u.user_group_id'); 
$this->db->where('u.user_id', $user_id); 
$query = $this->db->get(); 

귀하의 질문에서 볼 수있는 것을 바탕으로 테스트되지 않은 코드입니다.

0

하십시오 사용자 코드

public function getUser($user_id) { 

$this->db->select(array('*', 'ug.user_group', 'u.user'));  
$this->db->join($this->db->dbprefix .'user_group AS ug','ug.column = u.column','INNER'); 
//please user column similar in both tables 
$this->db->from($this->db->dbprefix . 'user as u'); 
$this->db->where('u.user_id', $user_id); 
$query = $this->db->get(); 

    if ($query->num_rows() > 0) { 
    return $query->result_array(); 
    return true; 
    } else { 
    return false; 
    } 
} 

은 내가 당신을 도울 바랍니다.

관련 문제