2개의 테이블의 업데이트 질문입니다.
본문
a테이블의 b필드에 적히 날짜가 오늘보다 작으면 c테이블에 d필드와 e필드의 값을 바꾸고 싶은데요
가능한가요?
$sql =" update {$g5['board_new_table']} set addarea = '$word', mb_id = '{$m_id},{$word}' where g5_write_note = where wr_8 < '".G5_TIME_YMD."' ";
이렇게 하는게 맞나요? ㅠ.ㅠ
답변 3
네 가능은 하지만 그 검색 구분을 쿼리를 한곳에서 처리하기 보다는 데이터를 가져와서 오늘 날짜를 비교 한후 그에 따른 update 쿼리를 실행해 주시면 좋을듯 합니다.
저런식의 쿼리는 동작하는지는 잘 모르겠네요
이론적으로는 모르겠지만 {$g5['board_new_table']} 테이블 자체를 걸러주는 where 조건이 없다보니
결국 전체를 다 바꾸는 결과를 초래할거 같습니다.
쿼리 자체를
$sql =" update {$g5['board_new_table']} set addarea = '$word', mb_id = '{$m_id},{$word}' where g5_write_note.wr_8 < '".G5_TIME_YMD."' and {$g5['board_new_table']} = '해당조건'"
처럼 수정해서 동작하게 할수는 있겠지만
윗분 말씀처럼 a 테이블의 값을 가져와서 비교 한뒤 c 테이블을 바꾸는 쿼리를 넣는게 오류를 줄이는 현명한 방법으로 보입니다.
질문하신 한글의 내용을
쿼리만 적어봅니다.
update tablec
set d= 'aaa', e='bbb'
where curdate() > (select b from tableA)
;
라는건데
조건이 이상하죠.
1행 이상 나올경우 오류로 처리가 안될것이고
c테이블의 어느 데이타와 연결해야 할지 조건자체가 없습니다.
위의 적어놓으신 쿼리를 먼저 코딩하기전에
sql 로 실행해보시고 나서 프로그램으로 적용하는게 맞습니다.
언급하신
$sql =" update {$g5['board_new_table']} set addarea = '$word', mb_id = '{$m_id},{$word}' where g5_write_note = where wr_8 < '".G5_TIME_YMD."' ";
는 오류납니다.
조건이 이상하다는거죠
where 테이블 = where 라는 것 자체가 문법오류
질문을 다시하시거나
조건을 잘 만들어서 (쿼리를 잘 모르시면) 질문을 올려보세요