반응형

일반적인 리스트 , 뷰  페이지를 작업하게됬다

학교관련 페이지여서 지역과 계열등등의 검색옵션이 필요했다

하나씩하나씩 검색했으면 참 좋았겠지만 역시나 추가요청이 나왔다

여러지역을 눌러서 검색하고싶다고한다

어찌보면 당연한 기능이기도한데 훔

어쨋든 전에는 쿼리문에서 in array 같은 내용으로 작업을했던것 같은데

속도문제도있고 등등 패스하고 

find_in_set 을 써보기로했다

일단 find_in_set 은 특정칼럼에서 내가 원하는 값이 있는지 체크하는? 그정도로 이해했다

근데 이게 검색하는값이 배열이여버렸다 

그래서 다른방법을 찾을까하다가

find_in_set 자체가 쿼리문이 크게 무겁지않다는 내용이 있어서

그냥 배열수로 for문 돌려서 쿼리를 날려버렸다

일단 쿼리문은 

if($_GET['wr_1'])
{
    $wr_1_cnt = count($_GET['wr_1']);
    
    $sql_search.= " and ( ";
    
    for($t=0; $t<$wr_1_cnt; $t++)
    {
        if($t == 0)
        {
            $or = '';    
        }
        else
        {
            $or = 'or';
        }
        
        $sql_search.= " {$or} find_in_set('{$_GET['wr_1'][$t]}', local) ";
    }
    
    $sql_search.= " ) ";
}

 

이런식으로 local 칼럼에 wr_1값이 있으면~~~ 식으로 작성했다

왠만큼 잘나오니 일단 만족~!

728x90
반응형
반응형

쿼리문을 날릴때

여러테이블을 조인시켜야 하는 경우가 있다

각각 조건을 걸어서 해당조건에 만족하도록 LEFT 조인시키는데

테이블 구조도 조금 신경써야될거같긴하다

SELECT * FROM a_table AS c 
        LEFT JOIN b_table AS l ON c.cs=l.id 
        LEFT JOIN c_table AS e ON l.lb=e.id 
        LEFT JOIN d_table AS s ON l.lc=s.id 
        LEFT JOIN e_table AS t ON l.ld=t.id 

where (1)

on 뒤에 조건을 통해 해당 테이블에서 자료를 가져오는식

where 문 뒤에도 조건을 달아서 정리할수있다.

728x90
반응형
반응형

기본적으로 자주 사용하는 쿼리문
계속 복사해서 사용하다보니 기억이잘안날때가있네

sql 쿼리문은 정말 활용도가 무궁무진하다.. 이중쿼리도있고 if문도 써버리고

근 2년이 다되가는데 아직도 새로운 코드들이 많으니 갈길이멀다

        <?php  
        $sql = " select 테이블명 where (1) ";  
        $result = sql_query($sql);  

        for ($i=0; $row2=sql\_fetch\_array($result); $i++) {  
            $ah\_chk = '2';  
        ?>  
        -- 반복할 코드
        <?  
        } 
        ?>
728x90
반응형
반응형

$sql = "select * from g5_board_new
                where (1) 
                    and (bo_table IN ('{$my_circle_sql}') or (bo_table NOT IN ('{$my_circle_sql}') 

                    and wr_parent IN (select wr_id from g5_board_new where (mb_id = '{$member['mb_id']}' ))

                    and (comment_chk = 'a' or comment_chk = 'r') )) 
                    and delete_chk != 'Y' 
            order by bn_datetime desc ";
$res = sql_query($sql);

 

이번에 다중쿼리를 하는데 조건이 중복되고 여러개여서 상당히 귀찮았다.

오류가 자꾸 났었는데 이유는 where절 안에 쿼리 조건문에서 = 으로 찾으려해서?

IN으로 바꿔주니 굴러가긴하는데 살짝 찝찝~

728x90
반응형

+ Recent posts