제목 | join table update 문의 | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | 다다닷 | 작성시각 | 2020/05/14 11:03:20 |
|
|||
안녕하세요. 테이블 2개를 업데이트를 해야하는 상황이라 고민 하던 중 CI 문법으로 해결이 안되어 문의 남겨 봅니다 ^^;
$user_data['NAME'] = $data['user_name']; $user_data['ADDRESS'] = $data['user_address']; $this->db->set($user_data); $this->db->where('UID',$this->session->UID); $this->db->join('table2 as T2','T2.UID = T1.UID', 'LEFT'); $this->db->update('table as T1');
위와 같이 사용 했는데 아래와 같이 테이블 정보 하나만 표기 되네요. UPDATE `table` AS `T1` SET `NAME` = '입력값', `ADDRESS` = '입력값' WHERE `UID` = '세션값'
구글링 후 아래와 같이도 사용 해보았습니다.
$this->db->set($user_data); $this->db->where('UID',$this->session->UID); $this->db->update('table as T1 LEFT JOIN table2 as T2 ON T2.UID=T1.UID');
로그 확인 결과 UPDATE `table as T1 LEFT JOIN table2` as `T2 ON T1`.`UID = T1`.`UID` SET `NAME` = '입력값', `ADDRESS` = '입력값' WHERE `UID`='세션값'
위와 같이 테이블을 감싸는 ` 부분이 제대로 감싸지질 않았습니다.
혹시나해서
$this->db->set($user_data); $this->db->where('UID',$this->session->UID); $this->db->update('`table` as `T1` LEFT JOIN `table2` as `T2` ON `T2`.UID=`T1`.UID'); 위와 같이도 해보았지만..
UPDATE `table`` as ``T1`` LEFT JOIN `table2`` as ``T2` ON `T1``.``UID` = `T1``.``UID`` SET `NAME` = '입력값', `ADDRESS` = '입력값' WHERE `UID`='세션값'
위와 같은 형태로 표기 되었습니다.
$sql = 'update table as t1 left join table2 as t2 on t2.uid=t1.uid set t1.name=?, t1.address=?'; $query = $this->db->query($sql, array('값1','값2'));
sql자체를 $this->db->query($sql); 를 사용 하는 방법도 있는건 알지만 .. 그저 조금 더 심플한 문법으로 해결을 할 수 있으면 더욱 편리 할 듯하여 문의 드려봅니다..^^;;
긴글 읽어 주셔서 감사합니다.
|
|||
다음글 | AWS SES 메일 발송 개선 및 email queue... (3) | ||
이전글 | 페이지네이션 next_link 클릭시 다음 블럭으로 ... (3) | ||
한대승(불의회상)
/
2020/05/14 11:42:58 /
추천
1
|
다다닷
/
2020/05/14 13:53:26 /
추천
0
@한대승(불의회상) 네 ^^; 아무래도 그렇게 해야만 될 것 같아서 결국 그냥 SQL 직접 작성하였습니다. 답변 감사합니다!! |
join 업데이트는 쿼리 빌더가 아닌 sql문으로 직접 작성하셔야 합니다.
쿼리 빌더 사용시 사이드 이펙트가 발생합니다.