특정 단어 포함 노출제외

특정 단어 포함 노출제외

QA

특정 단어 포함 노출제외

본문

$sql =" select * from {$g5['g5_shop_item_table']} where it_use = '1' and ca_id not in ('b0', '60', '6010', '6020', '6030', '6040', '6050', '6060') order by ca_id";

 

현재 특정 카테고리 노출 제외로 이렇게 쓰고 있는데요

 

여기에 it_maker 란에 특정 단어가 들어갈 경우 노출 제외를 추가 시키고 싶어요

 

it_maker에다 사이즈를 넣고 있는데 '120 x 300cm' 나 '150 x 300cm' 가 들어가 있다고 하면 300cm란 단어가 들어가면 제외 시키고 싶거든요.

 

$sql =" select * from {$g5['g5_shop_item_table']} where it_use = '1' and ca_id not in ('b0', '60', '6010', '6020', '6030', '6040', '6050', '6060') order by ca_id and it_maker not in ('300cm', '360cm', '420cm', '480cm', '540cm', '600cm') order by it_maker";

 

이렇게 하면 되나요?

이 질문에 댓글 쓰기 :

답변 2

$sql =" select * from {$g5['g5_shop_item_table']} where it_use = '1' and ca_id not in ('b0', '60', '6010', '6020', '6030', '6040', '6050', '6060')  and it_maker not in ('300cm', '360cm', '420cm', '480cm', '540cm', '600cm')  order by ca_id, it_maker";

 

SQL Query 작성 규칙이라는 것이 있는데요,

노란색으로 표시된 부분은 조건 절이기 때문에 where절 안에 들어가야 하며,

각 조건들은 and, or 등과 같은 연산자를 이용해 조건들을 덧붙일 수 있습니다. 따라서 조건이 order by 뒤에 들어가서는 안되구요~ (order by는 리턴되는 데이터의 정렬기준과 방법을 정합니다.)

 

그리고 not in과 not like의 차이를 한번 찾아보시는것이 좋겠지만,

간단히 설명드리자면 위의 문법과 같이 쓸때는 not in을 쓰시는게 맞기때문에 빨간색과 같이 like를 in으로 고치는 것이 맞습니다.

 

그리고 order by는 여러개의 기준점을 둘수 있으며, 제일 앞에 있는 기준점을 먼저 정렬한 후 그 중에서 두번째 기준점... 이런식으로 정렬됩니다.

아 그러면 엔바이츠님이 작성해주신

$sql =" select * from {$g5['g5_shop_item_table']} where it_use = '1' and ca_id not in ('b0', '60', '6010', '6020', '6030', '6040', '6050', '6060')  and it_maker not in ('300cm', '360cm', '420cm', '480cm', '540cm', '600cm')  order by ca_id, it_maker";

이런식으로 쓰면 문제가 없는건가요?

네 문제없을 것 같습니다.^^
다만, 위 쿼리문은 '300cm', '360cm', '420cm', '480cm', '540cm', '600cm' 모두를 제외한다는 뜻이므로, 300cm만 없애실려면 아래 쿼리문 사용하셔야 합니다.

$sql =" select * from {$g5['g5_shop_item_table']} where it_use = '1' and ca_id not in ('b0', '60', '6010', '6020', '6030', '6040', '6050', '6060')  and it_maker not in ('300cm')  order by ca_id, it_maker";

아 근데 엔바이츠님.

실제 들어가 있는건 '120 x 300cm' 나 '150 x 300cm'  같은 것들인데요

300cm만 해도 위에 것들이 제외가 되나요? 밑에 플라이님은 like 로 해야한다고 하셔서요

그럼 like를 쓰시는게 맞습니다~

$sql =" select * from {$g5['g5_shop_item_table']} where it_use = '1' and ca_id not in ('b0', '60', '6010', '6020', '6030', '6040', '6050', '6060')  and it_maker not like '%300cm'  order by ca_id, it_maker";

위와 같이 하면 '300cm'로 끝나는 모든 row들이 제외됩니다.

아니요 그건 해당 코드가 정확히 있어야 하는것이고

like 문으로 처리해 주셔야 합니다.

해당 like 문에 걸리는 글은 해당 id 값을 가져와서 그 값을 노출 안되게 해주시는 방법을 적용해 보셔야 합니다.

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

회원로그인

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