CI 묻고 답하기

제목 active 레코드에서 사용하는 CI구문들을 프로시져를 호출해서 쿼리할때 사용이 가능한지요?
카테고리 CI 2, 3
글쓴이 하늘을 바라보며 작성시각 2019/10/01 13:29:47
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 13410   RSS

예) $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

 

 다음글 $this->db->where('') 처리시... (2)
 이전글 CI 마이크로 서비스 가능여부? (3)

댓글

변종원(웅파) / 2019/10/01 14:20:10 / 추천 0
액티브레코드 구문을 mysql procedure 에 사용하고 싶다는 질문이네요. 결론은 불가능입니다.
하늘을 바라보며 / 2019/10/02 15:37:37 / 추천 0

제목 : 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에 서브쿼리 사용이 안됩니다. 

복잡한 쿼리는 그냥 사용하시는걸 추천합니다. 한대승님 의견에 한 표 +