TIP게시판

제목 [수정]액티브 레코드에서 서브쿼리 사용하기.
글쓴이 徽人 작성시각 2010/05/17 19:08:24
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 20246   RSS
$this->db->where('group_id', 'admin');
$this->db->select('id');
$this->db->from('users');

// 쿼리 컴파일
$subQuery = $this->db->_compile_select();

// 액티브 레코드 초기화.
$this->db->_reset_select();

$this->db->select('*');
$this->db->where("user_id IN ($subQuery)", NULL, FALSE);
$this->db->from('boards');

echo $subQuery = $this->db->_compile_select();

//SELECT * FROM (`boards`) WHERE user_id IN (SELECT `id` FROM (`users`) WHERE `group_id` = 'admin')

private 으로 지정해놓은 메서드를 사용해야 하기 때문에 쫌 찝찝하지만
서브쿼리 사용할 일 있으면 유용하게 사용할 수 있을 것 같습니다.

추가. 직접 쿼릴 날려본게 아니라서 잘못된 부분이 있네요.
수정했습니다.
$this->db->where('user_id', "($subQuery)", FALSE);  => $this->db->where("user_id IN ($subQuery)", NULL, FALSE);


 다음글 LAMP 웹사이트를 위한 10가지 간단한 보안 작업 (4)
 이전글 codeigniter Asset helper (4)

댓글

최용운 / 2010/05/18 08:49:22 / 추천 0
 헉.. 한자님 감사합니다.