CI 묻고 답하기

제목 Active Recode 작성시에 우선순위
글쓴이 이지포토 작성시각 2012/11/26 18:00:58
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 14717   RSS
조건절의 우선순의와 괄호를 묶어 표현하는 방법이 익숙하지 못합니다.


예를 들어

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

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

답변 주신분 미리 감사 드립니다.
 다음글 route 규칙에 관한 정보를 이디서 (1)
 이전글 어디서부터 시작을 해야할지 모르겠네요.ㅠㅠ (8)

댓글

변종원(웅파) / 2012/11/26 18:07:41 / 추천 0
조건절에 우선순위는 적용안되는 것으로 알고 있습니다.

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

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

헛발이2 / 2012/11/26 18:10:15 / 추천 0
$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'

한대승(불의회상) / 2012/11/26 18:46:11 / 추천 0
요즘엔 귀찮아서 $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'));

이지포토 / 2012/11/26 19:11:43 / 추천 0

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

즐거운 시간되세요.
 

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

 

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