CI 묻고 답하기

제목 쿼리문 질문 드립니다.
글쓴이 lcm 작성시각 2010/06/23 12:10:19
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 21107   RSS

  $this->db->select('USERS.USER_SQ, USERS.USER_ID, USERS.USER_NM');
  $this->db->from('USERS'); 

   if($SELECT2=='NAME' OR $SELECT2=='ID'){
          $this->db->join('COURSE_MEMBER', 'USERS.USER_SQ = COURSE_MEMBER.USER_SQ');
          $this->db->where('COURSE_MEMBER.COURSE_SQ =', $COURSE_SQ); 
 
             if($SELECT2=='NAME'){
                    $this->db->like('USERS.USER_NM',$keyword);
             }
             else{
                    $this->db->like('USERS.USER_ID',$keyword);
             }  
   }   

   $this->db->order_by("USERS.USER_SQ", "desc");
   
   $qry1= $this->db->_compile_select();
   $rows1= $this->db->query($qry1)->result_array(); 
   $this->db->_reset_select();   
     
   $this->db->select('USERS.USER_SQ, USERS.USER_ID, USERS.USER_NM');
   $this->db->from('USERS');
  
   if($SELECT2=='NAME' OR $SELECT2=='ID'){
          $this->db->join('COURSE_TUTOR', 'USERS.USER_SQ = COURSE_TUTOR.USER_SQ');
          $this->db->where('COURSE_TUTOR.COURSE_SQ =', $COURSE_SQ);  
           if($SELECT2=='NAME'){
                 $this->db->like('USERS.USER_NM',$keyword);
            }
            else{
                 $this->db->like('USERS.USER_ID',$keyword);
             }  
   }   
   $this->db->order_by("USERS.USER_SQ", "desc");
  
   $qry2 = $this->db->_compile_select();
   $rows2 = $this->db->query($qry2)->result_array(); 
   $rows3 = array_merge($rows1,$rows2);
    
   return $rows3;

유저 K라는 한사람이 있습니다.
각각의 테이블을 조회한 결과 A,B라는 테이블에 K가 존재하여
중복된 결과를 가져오고있습니다.
조회를 각각 따로하여서 array_merge로 병합했는데요..(중복제거가 안되서..)
이래서 이런 문제가 생겻습니다.
UNION을 사용하거나 SELECT문 하나로 해결하면 될거같은데..
제 실력으론 자꾸 오류가 나네요;;(UNION을 안써봐서;;)

해결방법없을까요?
=================================================
아래는 쿼리문 입니다.
 

SELECT `USERS`.`USER_SQ`, `USERS`.`USER_ID`, `USERS`.`USER_NM`
FROM (`USERS`)
JOIN `COURSE_MEMBER` ON `USERS`.`USER_SQ` = `COURSE_MEMBER`.`USER_SQ`
WHERE `COURSE_MEMBER`.`COURSE_SQ` = '17'
AND  `USERS`.`USER_NM`  LIKE '%%'
ORDER BY `USERS`.`USER_SQ` desc
SELECT `USERS`.`USER_SQ`, `USERS`.`USER_ID`, `USERS`.`USER_NM`
FROM (`USERS`)
JOIN `COURSE_TUTOR` ON `USERS`.`USER_SQ` = `COURSE_TUTOR`.`USER_SQ`
WHERE `COURSE_TUTOR`.`COURSE_SQ` = '17'
AND  `USERS`.`USER_NM`  LIKE '%%'
ORDER BY `USERS`.`USER_SQ` desc

 다음글 주소와 세그먼트에 관한 질문입니다. (2)
 이전글 보존한 페이지로딩이 멈추질 않습니다. (4)

댓글

lcm / 2010/06/23 12:10:36 / 추천 0
아까 글올렷는데 실수로 삭제해서 다시올립니다..
변종원(웅파) / 2010/06/23 12:36:33 / 추천 0
group by  ^^
lcm / 2010/06/23 12:50:01 / 추천 0
group by 를

$qry2 = $this->db->_compile_select();

전에다 써야하나요?
 어느부분에 어떤식으로 써야할지 모르겟네요..
변종원(웅파) / 2010/06/23 14:33:18 / 추천 0

아무 곳이나 선언해도 되지만 보기 좋게 order_by 전에 선언해주시면 됩니다.

lcm / 2010/06/23 14:40:00 / 추천 0
웅파님 감사합니다^^

아..혹시 UNION은 CI에서 지원하는 안하나요?

사용하려면

-----------------------------------------------
SELECT문 1

$rows1= $this->db->query('UNION');

SELECT문 2
-----------------------------------------------
이런식으로 사용하면되나요? 이렇게 사용햇더니 오류가 나서;


변종원(웅파) / 2010/06/23 15:17:11 / 추천 0
유니온은 지원 안합니다. 조인하시거나 액티브레코드가 아닌 기존 방식으로 사용하실 수는 있습니다.
lcm / 2010/06/23 15:19:22 / 추천 0

아..넵 감사합니다^^