질문 Q #10159
Active Recode 작성시에 우선순위
이지포토 2012-11-26 18:00:58
조건절의 우선순의와 괄호를 묶어 표현하는 방법이 익숙하지 못합니다.


예를 들어

SELECT * FROM (`ibtentrant`) WHERE ((`payFlag` = 'Y' AND `entType` = 'L') or (`payFlag` = 'N' AND `entType` = 'T')) AND `eCode` = 'SE12J3000232'

라는 문장을 액티브레코드로만 표시한다면 어떻게 해야 하나요?

답변 주신분 미리 감사 드립니다.
답변 4
#1 변종원(웅파) 2012-11-26 18:07:41
조건절에 우선순위는 적용안되는 것으로 알고 있습니다.

AR로 괄호 표현 안됐던 것 같습니다.

sql로 작성하시거나 where 절에 sql을 넣는 형태로 진행하셔야 할겁니다.

#2 헛발이2 2012-11-26 18:10:15
$where = "((`payFlag` = 'Y' AND `entType` = 'L') or (`payFlag` = 'N' AND `entType` = 'T'))";
$this->db->where($where);
$this->db->where('eCode', 'SE12J3000232');
$query = $this->db->get('ibtentrant');
결과
SELECT * FROM (`ibtentrant`) WHERE ((`payFlag` = 'Y' AND `entType` = 'L') or (`payFlag` = 'N' AND `entType` = 'T')) AND `eCode` = 'SE12J3000232'

#3 한대승(불의회상) 2012-11-26 18:46:11
요즘엔 귀찮아서 $this->db->query()를 사용 합니다.
단, 보안상 ? 를 애용 하고 있습니다.

$sql = "SELECT * FROM (`ibtentrant`) WHERE ((`payFlag` = ? AND `entType` = ? ) or (`payFlag` = ? AND `entType` = ? )) AND `eCode` = ? ";

$rs = $this->db->query($sql, array('Y', 'L', 'N', 'T', 'SE12J3000232'));

#4 이지포토 2012-11-26 19:11:43

세분 답변 감사 합니다.
더불어 좋은 팁 얻어 갑니다.^^

즐거운 시간되세요.
 

제가한 방법입니다만 보안상 좋지 않다면 지적 바랍니다.

 

    $sql = "SELECT * from ibtentrant WHERE 1 and ( ( payFlag='Y' AND  entType='L')  or (entType='T')) ";
    $sql .= " AND eCode='".$entcode."'  ";
    $rlt = $this->db->query($sql);