sql 출력 때문에 질문드립니다.

sql 출력 때문에 질문드립니다.

QA

sql 출력 때문에 질문드립니다.

본문

특정조건으로 다수의 wr_id 값을 얻었습니다. 
이걸 다른 게시판에 해당 wr_id 가 포함되어 있는 게시글을 모두 찾아 출력하려고 합니다. 
and로 여러 개 wr_id 연결하니 출력이 제대로 안 되는데 방법이 없을까요?

 

 

 

 

 


include_once($board_skin_path."/sql_search.php");
$sql = " select
            *
          $sql_common
          $sql_search
          $sql_order";
$result = sql_query($sql, true);
$sql_search = "where mb_id != '' ";
foreach ($result as $key => $value) {
    $sql_search .= " and wr_id = '{$value['wr_id']}' ";
}
 
// 출력
$sql = "select
             *
        from
            g5_write_{$table_to}
        $sql_search
        order by
            wr_id asc";
$result = sql_query($sql);

이 질문에 댓글 쓰기 :

답변 5

AND 연산자 대신 IN 연산자를 활용해서 다음과 같이 수정해 보시면 어떨까 합니다


$wr_ids = array();
foreach ($result as $key => $value) {
    $wr_ids[] = $value['wr_id'];
}
$wr_ids_str = implode(',', $wr_ids);
// 출력
$sql = "SELECT *
        FROM g5_write_{$table_to}
        WHERE wr_id IN ({$wr_ids_str})
        ORDER BY wr_id ASC";
$result = sql_query($sql);

이렇게 했을때 특정조건으로 wr_id 값을 얻었을때 wr_id가 포함된 모든 게시글을 출력 할 수 있을 것으로 생각합니다.


$sql = "select * from $sql_common $sql_search $sql_order";
$result = sql_query($sql);
$search_id = array();
for($i=0;$row=sql_fetch_array($result);$i++) {
    $search_id[] = $row['wr_id'];
}
 
//출력
$sql = "select * from g5_write_{$table_to} where mb_id != '' and wr_id IN (".implode(",",$search_id).") order by wr_id asc";
$result = sql_query($sql);

 

$search_id 의 갯수가 많아질 경우 속도는 장담을 못하겠습니다.

 

 

 

for($i=0;count($search_id)>$i;$i++)

{

 if($i==0)

{

$where = " and (wr_id='".$search_id[$i]."' ";

}else{

 $where .= " or wr_id='".$search_id[$i]."' ";

}

}

이런식으로 해도 됩니다. in보다는 속도는 빠를거에요

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

회원로그인

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