mysql구문 질문드립니다.

mysql구문 질문드립니다.

QA

mysql구문 질문드립니다.

본문

안녕하세요

항상 sir 고수님들의 많은 도움을 받고있는 회원입니다.,

다름이아니라 mysql구문 중 궁금한점이 있어 질문드리게되었습니다.

 

    if (!empty($search_keyword)) { ////////////키워드 검색
        $where .= " And ( c.c_name like '%{$search_keyword}%') 
                    OR ( m.bz_nm like '%{$search_keyword}%' )
                    OR ( c.c_title like '%{$search_keyword}%' )
                    OR ( c.c_addr1 like '%{$search_keyword}%' )
                    OR ( c.c_addr2 like '%{$search_keyword}%' )
                    OR ( c.c_addr3 like '%{$search_keyword}%' )
        ";
    }

 

이런식으로 짜여있는데요

하나씩은 검색이 잘되는데 6가지항목을 조합하여 검색하여도 나오게끔 하고싶습니다.

아직 mysql쪽은 초보라 많은 도움 부탁드립니다.

감사합니다!

이 질문에 댓글 쓰기 :

답변 1

if (!empty($search_keyword)) { ////////////키워드 검색
        $where .= " And (
                    ( c.c_name like '%{$search_keyword}%') 
                    OR ( m.bz_nm like '%{$search_keyword}%' )
                    OR ( c.c_title like '%{$search_keyword}%' )
                    OR ( c.c_addr1 like '%{$search_keyword}%' )
                    OR ( c.c_addr2 like '%{$search_keyword}%' )
                    OR ( c.c_addr3 like '%{$search_keyword}%' )
                    )
        ";
    }

마르스컴퍼니님 답변 감사드립니다!
바로 적용해보았는데 기존과 결과가 같습니다.
예를들어 성남시만 검색, 만두만 검색하면 따로따로는 잘나오는데

성남시 만두를 검색하면 나오지않고있습니다.ㅜㅜ

그누보드의 사용자 정의 함수를 사용할 수 있다면 다음과 같이 작성해 볼 수 있습니다.
(그렇지 않다면 /lib/common.lib.php 의 get_sql_search() 함수를 참조해 볼 수 있습니다.)

$where .= get_sql_search('', 'c.c_name||m.bz_nm||c.c_title||c.c_addr1||c.c_addr2||c.c_addr3', $search_keyword, 'and');

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

위의 코드는.. 아래와 같은 패턴을 처리한 것이라고 보면 됩니다.

 $where .= " And (
                    ( c.c_name like '%성남시%')
                    OR ( m.bz_nm like '%성남시%' )
                    OR ( c.c_title like '%성남시%' )
                    OR ( c.c_addr1 like '%성남시%' )
                    OR ( c.c_addr2 like '%성남시%' )
                    OR ( c.c_addr3 like '%성남시%' )
                    )
        ";
       
 $where .= " And (
                    ( c.c_name like '%만두%')
                    OR ( m.bz_nm like '%만두%' )
                    OR ( c.c_title like '%만두%' )
                    OR ( c.c_addr1 like '%만두%' )
                    OR ( c.c_addr2 like '%만두%' )
                    OR ( c.c_addr3 like '%만두%' )
                    )
        ";

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

회원로그인

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