필터링 관련 not in, not like 변경 0 6 4,052

by 꼬마의꿈 [SQL Query] [2013.05.23 10:49:32]


이미지 015.png (5,191Bytes)
이미지 014.png (9,838Bytes)

필터링 기능을 추가 해야됩니다.

데이터는 건들지 못하고 있는 데이터 내에서 필터링이 작동해야합니다.

not in ( select ~ 로 는 한계가 있어서 

not like ( select ~ 로 변경할려고 하는데 멀티 셀렉트 에러가 나옵니다.

혹시 not like 쪽에서도 select 를 할수 있는 방법 없을까요?
by 케를로스 [2013.05.23 10:55:48]
리턴되는 값이 2개인거 아닌가요??? 쿼리를 보여주셔야;; 해결이 될꺼같은데요

by 꼬마의꿈 [2013.05.23 11:02:24]
멀티로우가 나오는거 맞습니다.

밑에 있는게 기존 쿼리 입니다.

위에있는게 변경된 쿼리 입니다.

by 마농 [2013.05.23 11:16:03]
-- 0. 변경전 NOT IN ==> 필터로 풀림
   AND cs_nm NOT IN (SELECT code_nm
                       FROM tc_code
                      WHERE parent_cd = 'FILT_CG'
                     )
-- 1. 변경후 IS NOT NULL 조건추가 ==> ANTI JOIN으로 풀림
   AND cs_nm IS NOT NULL
   AND cs_nm NOT IN (SELECT code_nm
                       FROM tc_code
                      WHERE parent_cd = 'FILT_CG'
                        AND code_nm IS NOT NULL
                     )
-- 2. 변경후 NOT EXISTS 로 바꿈.
   AND NOT EXISTS (SELECT 1
                     FROM tc_code
                    WHERE parent_cd = 'FILT_CG'
                      AND code_nm = m.cs_nm
                   )
-- 3. 코드테이블의 코드명에 인덱스가 있으면 좋겠네요.
-- 참고 : http://wiki.gurubee.net/display/CORE/Anti+Join

by 꼬마의꿈 [2013.05.23 11:32:36]
문장안에 있는 단어가 맞으면 필터링 해야하는 구조입니다.

보여주신건 [=] 단어가 매치가 되면 필터링 하는거 아닌가요?

like '%' || '특정단어들' || '%'  이런 형식으로 필터링이 가능해야 됩니다.

특정단어들은 로우수가 많습니다. 

by 마농 [2013.05.23 11:40:22]
   AND NOT EXISTS (SELECT 1
                     FROM tc_code
                    WHERE parent_cd = 'FILT_CG'
                      AND m.cs_nm LIKE '%'||code_nm||'%'
                   )

by 손님 [2013.05.23 12:53:41]

감사합니다.

정상적으로 출력값들 나오고 있습니다.

^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입