반응형

휴대폰 번호를 검색하는데

옛 쇼핑몰을 수정에 수정에 수정을 거듭하다보니 주문 폼이 엉켜버린것같다

휴대폰에 하이픈이 들어있는것도있고 없는것도있고

그래서 주문조회하는데 하이픈을 입력하는사람도 입력안하는사람도

db에만 통일되게 들어가있으면 넘길때만 처리해서 넘기면되는데

워낙 데이터양도많고 처음부터 손대기그래서 

쿼리문할때도 하이픈 빼버리고 추출하도록 수정했다.

replace 를 사용했다

where 문에서 적용시키는게 잘안나와서 귀찮 이것저것 해보다 성공

쿼리문에서의 특정 문자 제거는 replace(해당컬럼명,'해당문자','바꿀문자')

ex) select * from table where replace(hp,'-','')='01012345678';

이거랑 별개로 주문조회 자체가 좀 문제있는거같긴한데;

728x90
반응형
반응형

php 쿼리를하다가

등록된 db에서 그룹별로 묶어서 그룹수와 그룹별 데이터갯수를 구해야했다

통계 그래프로 나타내야해서 수를 카운트하는게 중요했는데

일단 그룹별 총 수는

select count(*) as cnt, db_group from [] where [] group by db_group 으로 

뽑아낼수있었고 그래프에다가는 배열로 담아서 뿌려줫다

그룹의수는 이쿼리에서 그냥 카운트해도 되기는하는데

select count(cnt) as cnt, db_type
                            from ( select count(*) as cnt, db_count, db_type from {$tbl_x} where wr_id = '{$list[$i]['wr_id']}' group by db_count, db_type ) as a
                        where (1) group by db_type order by db_type desc

이건 실제 적용한 코드인데 몇개 더 추가되긴했지만 이런식으로도 각각 수를 구했다.

이중쿼리,,인가 이것도 익숙해져야하는데 가끔씩만 쓰다보니 할때마다 헷갈리네

 

728x90
반응형
반응형

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

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

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

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

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

어쨋든 전에는 쿼리문에서 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 = "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
반응형
반응형

$sql_common = ', IF(ml.mlf_s_date > ml.mlf_f_date, ml.mlf_s_date, ml.mlf_f_date) as update_date';

 

쿼리에도 if 문을 사용할수있었다..

728x90
반응형

+ Recent posts