질문 Q #11315
active record join 에서 정수형을 조건으로 넣으면 escape 처리가 되는 현상
터푸 2014-04-28 11:56:59
$this->db_slave->join('some_table as st','some_table > 0 and st.idx=st1.idx','left');
이런식의 쿼리를 작성하게 되면

실제 쿼리는 

LEFT JOIN `some_table` AS st ON `st`.`idx` > `0` AND `st`.`idx`=`st1`.`idx`

이렇게 정수까지 escape 처리가 되어 쿼리 에러가 나옵니다.
(맞는 표현 : LEFT JOIN `some_table` AS st ON `st`.`idx` > 0 AND `st`.`idx`=`st1`.`idx`)
제가 해결한 방법은 조인문의 0 비교를

where('st.idx > 0',null,false) 조건절에 넣어서 임시로 이용하는데

이렇게 하다 보면 쿼리문 자체가 최적화 되기 힘든 부분도 있고 해서 
실 서비스에 사용하기 꺼려 지는 부분이 있습니다.

위 부분에 대한 해결책 또는 다른 방법을 아시는 분 계실까요?
 
답변 2
#1 한대승(불의회상) 2014-04-28 12:42:02
on 절에 escape 처리를 하지 않도록 하는 방법이 없으니 지금 처럼 where 절에 기술하는 방법외에는 없어 보입니다.
#2 터푸 2014-04-28 12:57:09
네 그렇군요 감사합니다.