XETOWN

물어보기

조회 수 71 댓글 5

DB 테이블에 areas 라는 필드를 만들었고, areas 에는 지역명이 , 로 나뉘어 들어가 있습니다.

 

예) 서울 서초, 서울 강남, 경남 전체, 충북 태안

 

이런 테이블을 대상으로 Select 쿼리를 만들려고 하는데요,

 

$args->areas 에 들어가는 값은 '서울,경기' 이런 식으로 , 로 구분되는 문자열이거나 explode를 통해 배열화를 하려 합니다.

 

 

그런데 select 쿼리를 어떻게 만들어야할지를 모르겠네요..

 

 

예를 들어서 areas 값에 서울 XXX 또는 경남 XXX 이라는 값이 포함된 행을 select 하려면 어떻게 할까요?

 

 

그냥 areas 에서 "서울 XXX" 이 들어가 있는 행을 추출하려면 like 를 사용하면 될 것 같은데,

 

검색 대상 지역은 서울 or 경기 지역이고, 테이블에 들어가 있는 값은

1행: 서울,경남

2행: 경기, 경남

 

이런 식으로 되어 있는지라 어떤 condition을 사용해야할지 모르겠습니다.

 

in 도 생각해보고 like도 해봤는데, 정확한 답은 아니더라구요...

 

 

혹시 아시는 분 계시면 조언을 좀 부탁드립니다...... ^^;;

 

 

 

 

 

 

 

 

  • profile
    Double'U' 2016.06.11 08:09:04
    WHERE areas LIKE '서울%' OR areas LIKE '경기%'
    이렇게 하면 되지 않을까요?
  • profile
    단희아빠 2016.06.11 11:16:52
    오! 저도 이 질문이 궁금했었는데... 그런 방법이 있었군요... xe query문으로 하면 이렇게 하면 될까요?
    <conditions>
    <condition operation="like" column="areas" var="서울" pipe="or" />
    <condition operation="like" column="areas" var="경기" pipe="or" />
    </conditions>
  • profile
    Double'U' 2016.06.11 11:44:50
    xe쿼리는 전 모릅니다....
    제가 모듈을 못만드는 이유이기도 하구요....
  • ?
    SimpleCode 2016.06.11 15:52:47
    사실 콤마(,)로 구분해서 저장하는 경우, 검색 기능은 포기해야 됩니다. 의도치 않은 검색 결과가 나올 수 있기 때문이죠.
    예를 들어, A라고 검색을 했을 때, 칼럼에 AA라는 값이 있다면 일반적인 쿼리로는 제대로 된 검색 결과를 가져오기가 불가능합니다.

    실제로, XE에서 태그를 굳이 따로 테이블로 나눠서 저장하는데, 게시판에서 태그로 검색을 할 수 있는 기능 때문입니다.

    xe_documents 테이블의 tags 칼럼과 xe_tags 테이블에 태그를 동시에 저장해놓고, 태그로 검색할 경우에는 xe_tags 테이블과 JOIN해서 검색합니다.
    1
  • profile
    과니 2016.06.17 00:59:26
    댓글 감사합니다!
    저도 그동안 다른 자료도 찾아보고 XE DB 구조도 봐가면서 어떻게 해야 하는 건지 감을 잡아가고 있습니다~ ^^

    지금 당장은 괜찮은데, 데이터 양이 많아지면 검색 기능을 넣어야할 때를 대비해서 준비하고 있습니다..;;

서버에 요청 중입니다. 잠시만 기다려 주십시오...