테스트 사이트 - 개발 중인 베타 버전입니다

쿼리문 "가,나" 문자열 기준으로 "가" 포함된 행을 찾고싶습니다. 채택완료

차가운잎사귀 7년 전 조회 3,440

안녕하세요?

 

질문을 어떻게 정리해야할지..ㅠㅠ

 

 

 

 

http://49.247.202.26/phpmyadmin/url.php?url=http://dev.mysql.com/doc/refman/5.5/en/select.html" target="mysql_doc">SELECT * FROM `cb_cmall_category` WHERE find_in_set ('강남구', cca_delivery)

 

이렇게하면 

 

 

이렇게 찾습니다만..

 

http://49.247.202.26/phpmyadmin/url.php?url=http://dev.mysql.com/doc/refman/5.5/en/select.html" target="mysql_doc">SELECT * FROM `cb_cmall_category` WHERE find_in_set ('강남구,마마', cca_delivery)

 

이렇게하면 0행으로 집계됩니다.

 

1개이상의 지역을 포함된 문자열 모두 찾아줬으면 좋겠는데..

 

find_in_set 의 찾으려는 문자열은 동적입니다.

 

'강남구' 하나 또는 '강남구,마포구' 또는 '강남구,마포구,은평구' 처럼 동적입니다.

 

도와주시면 감사하겠습니다.

 

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 10개

채택된 답변
+20 포인트
플라이
7년 전

하나의 쿼리문으로만 해결을 하시기 보다는 php 구분자를 분리하는 방식으로 해서 where like 문을 만들어서 like '%강남구%' or 방식으로 해서 쿼리문을 처리되도록 하시는게 좋을듯 합니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

차가운잎사귀
7년 전
답변주셔서감사합니다.
잉끼님하고 플라이님하고 플래토님하고 가장 나은방식을 제시해주신것같네요.

댓글을 작성하려면 로그인이 필요합니다.

굳이 꼭 ("가","나","다") 로 저장할필요는 없어보여서..

 

 

 

이렇게 해볼려고합니다.

 

배달가능한 업체를 찾는게 주요 이유였는데..

 

제가 아무래도 첫질문은 구조적문제부터 잘못 발을 딛은것같습니다.

 

 

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

그리고 귀한 시간 내주셔서 답변주신분들께 진심의 감사인사드립니다.

 

한분만 채택해야하는 안타까움이 있어서..

내공이 필요하신분은 따로 쪽지주시면 질문올리고 바로 채택드리겠습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

플라이
7년 전
그래도 문의 주신글 채택을 하셔야 다음에 글 남기시는게 좋으실겁니다. 2개 이상 채택없이 남길수 없는걸로 알고 있습니다.

댓글을 작성하려면 로그인이 필요합니다.

플래토
7년 전

PHP로 처리할경우

</p>

<p><?php</p>

<p>$arrstr = array('강남구','마포구');</p>

<p>$sql_where = " where (1) ";</p>

<p>$i = 0;</p>

<p>foreach($arrstr as $key => $val) {</p>

<p>    if ($i == 0)</p>

<p>        $sql_where .= " ( ";</p>

<p>   else</p>

<p>        $sql_where .= " or ";</p>

<p>    $sql_where .= " cca_delivery like '%".$val."%' ";</p>

<p>    $i++;</p>

<p>}</p>

<p>if ($i == 0)</p>

<p>    $sql_where .= " ) ";</p>

<p>$sql = " select * from  `cb_cmall_category` ".$sql_where;</p>

<p>?></p>

<p>

 

와 같이 하면 되지 않을까요?

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

차가운잎사귀
7년 전
귀한시간에 정성들여 소스를 작성하여주신점 고개숙여감사드립니다.
따로쪽지주시면 채택해드리겠습니다.
정말감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

플래토
7년 전

딱 떨어지는 단어가 명확하면 잉끼님의견이 맞는거같고

단어가 문장중간에 포함된 내용들이면 플라이 님의 견이 더 적합할것 같습니다.

 

하지만 저라면 플라이님의견의 패턴으로 처리할듯 싶네요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

차가운잎사귀
7년 전
감사합니다.
후자쪽이 맞구요.
찾으려는 지역이 워낙에 많기도 하고 , 동적이기도해서..
찾으려는 지역을 배열로 해서 쿼리문을 만들어야겠네요..ㅠㅠ
쿼리문이 엄청길면 문제가 생길까요?
아니면..
(강남구,은평구,마포구)
찾으려는게 3개면
for문으로 배열수만큼 순회하면서
하나씩 찾는게 나으려나요?

엄청나게 긴 쿼리문을 만든다. vs 찾으려는 지역을 배열수만큼 순환하면서 쿼리집계한다.

댓글을 작성하려면 로그인이 필요합니다.

잉끼s
7년 전

SELECT * FROM `cb_cmall_category` WHERE find_in_set('강남구',cca_delivery) or find_in_set('마마',cca_delivery)

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

차가운잎사귀
7년 전
답변주셔서감사드립니다.
찾으려는 지역이 100개이상 될가능성도있어서..ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

 

이렇게 하나만 집계됩니다.

 

저는 7,9,10,11이 집계되길 원하거든요..

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

7년 전

SELECT * FROM `cb_cmall_category` WHERE find_in_set(cca_delivery,'강남구,마마')

 

이렇게 넣으시면 됩니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

차가운잎사귀
7년 전
답변주셔서 감사드려요.
해봤더니 "강남구"만 있는 행 하나만 집계됩니다.

댓글을 작성하려면 로그인이 필요합니다.

7년 전

find_in_set 설명을보면 해당위치의 번호를 반환한다고 되어 있습니다.

즉 cca_delivery 와 찾고자 하는 문자가 맞지 않기 때문에 0을 반환하는 듯 싶네요.

cca_delivery 와 찾고자 하는 문자를 정확히 일치시키면 되지 않을까 싶습니다.

 

참고 주소

https://www.w3resource.com/mysql/string-functions/mysql-find_in_set-function.php

http://skylove1982.tistory.com/388

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

차가운잎사귀
7년 전
답변주셔서 감사드립니다.
찾아야하는 파라미터는 하나만 가능한가보군요..
저는 "강남구,은평구,마포구" 이렇게 찾으려는 문자열이있다면.. 이중에 포함된 cca_delivery 가 있으면 집계하고싶은데
가능한 쿼리가 있을까요?
핫워드
7년 전
저도 쿼리고수가 아니라 잘 모르겠습니다.

다만 find_in_set 은 한 행만 리턴하는 쿼리 같습니다.
단순하게 찾기만 한다면 다중 like 를 사용하는게 좋을거 같구요.(단 데이터가 많거나 사용자가 많다면 좋지 않음)

또는 IN 절을 이용해 보는 건 어떨까요?

댓글을 작성하려면 로그인이 필요합니다.

FIND_IN_SAET(칼럼명, "강남구,마포구,은평구")

이 순서가 아닐까요?

반대로 넣으신 것 같습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

차가운잎사귀
7년 전
답변주셔서 감사드립니다.

SELECT * FROM `cb_cmall_category` WHERE find_in_set (cca_delivery, '강남구,마마')

강남구 포함된 행들이 집계됬으면 좋겠는데 강남구 하나있는 행만 집계하네요.
왕계란
7년 전
실제 검색을 하실 거라면 OR로 주루룩 연결하셔야 할 것 같습니다.
그렇지 않고서는 '강남구' 하나만 들어있는 것까지 검색은 어렵지 않나 싶네요.
차가운잎사귀
7년 전
네 계란님 감사합니다. 안그래도 다른분들도 긴 쿼리문 작성을 추천해주시는것같네요.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인