sql문 안에 if 사용하기 질문입니다

sql문 안에 if 사용하기 질문입니다

QA

sql문 안에 if 사용하기 질문입니다

본문

안녕하세요

 

오늘 벌써 여러번 질문을 드리네요 아는게 없어서;;

 

$sql = " select * from {$g5['teamcost_table']} where co_team='{$co_team}' and co_status='{$co_status}' order by co_team, co_date asc ";

 

처음 이렇게 select 문을 만드니까 wehre 안에 co_team 과 co_status 의 값이 선택된 것이 아닌 전체

 

<option value="">전체</option>

 

이걸 선택했을때 작동이 되지 않아 아무 값도 가져오지 않았습니다

 

그래서 

$sql = " select * from {$g5['teamcost_table']} where ";

if ( $_GET['co_team'] != "" ) { 
        $sql .= " co_team='{$co_team}' ";
    }else{
        $sql .= " co_team IN ('1팀', '2팀', '3팀', '4팀', '5팀') ";
    }
    if ( $_GET['co_status'] != "" ) {
        $sql .= " and co_status='{$co_status}' order by co_team, co_date asc "
    }else{
        $sql .= " and co_status IN ('대기', '승인', '반려') order by co_team, co_date asc "
    }

 

이렇게 만들어봤는데 이거는 아예 오류가 떠 버리더라고

 

where 안에서 전혀 서로 관계없는 if를 두번 사용해서 select를 만들고 싶은데

 

도움이 필요합니다

이 질문에 댓글 쓰기 :

답변 2

선택항목이 없는 경우 조건절이 없는데 where만 덩그러니 남으니 에러가 날 밖에 없습니다

where (1) <-- (1) 추가

$sql .= " and co_team='{$co_team}' "; //and 추가

 $sql .= " and co_team IN ('1팀', '2팀', '3팀', '4팀', '5팀') "; //and 추가

----------------------------

위처럼 하면 order by가 적용 안되는 경우가 생기므로 아래처럼 하세요

 

if ( $_GET['co_team'] != "" ) $sql2[] = " co_team='{$co_team}' ";
if ( $_GET['co_status'] != "" ) $sql2[] = " co_status='{$co_status}' ";

if($sql2[0] ) $sqlStr = "where ".implode(" and ", $sql2);

 

$sql = " select * from {$g5['teamcost_table']} $sqlStr order by co_team, co_date asc ";

 

답변을 작성하시기 전에 로그인 해주세요.
전체 722
QA 내용 검색
filter #sql ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT