예) $this->db->last_query(), $this->db->get(), $this->db->get_compiled_select()
위의 예와 같은 것을 프로시져 호출하여 쿼리시에 사용이 가능하다면 쓰는 방법을 좀 알고 싶습니다.
제가 프로시져를 호출해서 쓰게 된 이유는 쿼리가 복잡해서 사용하였는데요. 막상 사용 후 CI에서 사용하는 간단 명료한 명령들을 사용하지 못해서 문의드립니다. 쿼리를 바꿔서 CI 상에서 사용 가능하도록 ( active 레코드에서 사용하는 CI구문) 바꿔서 사용해야 하는지요.
아래내용을 적용한다면 어떻게 구성해야 할까요?
예) 쿼리형태(현재 프로시져의 일부 쿼리입니다.)
SELECT *
, ( SELECT FROM country_p g where a.send_p = g.intp_p ) as s_send
, ( SELECT FROM country_p f where a.recv_p = f.intp_p ) as r_recv
FROM `intp_sr` `a`
LEFT JOIN `intp_sr` `e` ON (`a`.`idx` = e.idx)
LEFT JOIN `curr` `h` ON (1 = 1)
where case when (SELECT
FROM coun_p g
where a.recv_p = g.intp_p and substr(a.send_p,1,3) != substr(a.recv_p,1,3)) like '태%' then h.idx = 11
else h.idx = 1
end
and a.send_date BETWEEN in_start_dt AND in_end_dt
and a.send_p >= 80
제목 : DB join and union 질문 의 내용 참조 후 아래 댓글을 보았습니다.
결론적으로 문의 드리면, $this->db->query()에 쿼리문을 모두 넣고 처리하는 경우는 위의 구문을
CI상에서 구현이 가능한지요? 만약 가능하다면 복잡한 쿼리를 넣은 후 액티브레코드 구문처리를 한 예시나 좋은 곳 있으시면
알려주세요. 정말 감사합니다.^^
댓글
한대승(불의회상) / 2018/07/23 19:10:25
쿼리가 복잡한 경우엔 쿼리빌더 보다 $this->db->query() 에 직접 SQL문을 실어 던지는것이 좋습니다.
변종원(웅파) / 2018/07/24 18:12:15
join에 서브쿼리 사용이 안됩니다.
복잡한 쿼리는 그냥 사용하시는걸 추천합니다. 한대승님 의견에 한 표 +