미채택 완료

2개의 테이블의 업데이트 질문입니다.

2017-09-29 (금) 10:41:06 2,472

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개 / 댓글 1개

질문하신 한글의 내용을 

쿼리만 적어봅니다.

Copy
update tablec set d= 'aaa', e='bbb'where curdate() > (select b from tableA);

라는건데

조건이 이상하죠.

1행 이상 나올경우 오류로 처리가 안될것이고

c테이블의 어느 데이타와 연결해야 할지 조건자체가 없습니다.

위의 적어놓으신 쿼리를 먼저 코딩하기전에

sql 로 실행해보시고 나서 프로그램으로 적용하는게 맞습니다.

언급하신

Copy
$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 라는 것 자체가 문법오류

질문을 다시하시거나

조건을 잘 만들어서 (쿼리를 잘 모르시면) 질문을 올려보세요


저런식의 쿼리는 동작하는지는 잘 모르겠네요

이론적으로는 모르겠지만 {$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 쿼리를 실행해 주시면 좋을듯 합니다.

답변에 대한 댓글 1개

이해가 잘안되네요..

답변을 작성하려면 로그인이 필요합니다.