제목 | mysql 액티브레코드관련 질문입니다. | ||
---|---|---|---|
글쓴이 | 돼지바뿅뿅 | 작성시각 | 2015/09/09 16:58:36 |
|
|||
안녕하세요. 날씨가 많이 선선해졌네요. 다들 감기조심하시구요 질문입니다. A라는 테이블과 B라는테이블이있습니다. A테이블의 1칼럼이 B테이블의 3칼럼과 묶여있는데, B테이블의 2칼럼의 조건을 검색하여 3칼럼을 찾고, A테이블의 1칼럼과 B테이블의 3칼럼을 비교하여, 리스트를 뽑고싶습니다. 제가 짠 쿼리는 우선 B테이블의 3칼럼을찾습니다. $B_result = $this->lib->test('값'); 으로 넘겨 3칼럼의 값을 두개를받았습니다. 받은값을 $값 = (값1, 값2)로 설정 후 A테이블의 조건을 걸었습니다 $this->db->select(*, flase); $this->db->where('1 IN ', $값, false); 여기서 부터 문제입니다 ㅜ 결과값을 받고 $A_result['total'] = $this->db->get(A)->num_rows(); orderby를 걸어줍니다 $this->db->order_by('1', 'DESC'); $A_result['query'] = $this->db->get(A); $A_result['query']->num_row()가 있으면 $A_result를 return; 여기까진데요.. 출력되는 쿼리를 찍어보면 order by 걸기 전 select * from A where 1 In (값1,값2); order by 걸은 후 select * from order by 1 DESC; 쿼리가 바뀌어 버립니다.. A테이블에 있는 칼럼을 조건으로 검색했을시 변화없이 처음 쿼리에 order by가 걸려 원하는 결과 값이나오는데 B테이블을 걸고 하면 쿼리가바뀝니다.ㅜㅜ 보기 어려우실테니 종합해서 쿼리올립니다. 고수님들 도와주세요 ㅜ $this->db->start_cache(); $B_result = $this->lib->test('값'); $b_cnt = count($B_result); for($i=0; $i<$b_cnt; $i++) { $where .= $B_result[$i]['3']; if($i != $b_cnt-1) $where .= ","; } $this->db->where('1 IN ', '('.$where.')', false); $this->db->select('*', false); $this->db->stop_cache(); $A_result['total'] = $this->db->get(A)->num_rows(); $this->db->order_by('1', 'DESC'); $A_result['query'] = $this->db->get(A); $this->db->flush_cache(); |
|||
다음글 | 초보 질문이 있습니다. rest풀 방식의 유알엘 성격(... (5) | ||
이전글 | CI3.0-dev 에서 세션처리 에러 (HMAC) (1) | ||
한대승(불의회상)
/
2015/09/09 17:25:09 /
추천
0
|
쿼리 cache 걷어내고 테스트 해보세요.