에 대한 검색을 좋아하지. 이 두 테이블은 다음과 같은 데이터를 중간 테이블 통화 ItemModels를 통해 연결되어 있습니다 :내가 ID 및 텍스트 열이있는 모델 테이블이 링크 표
ID | ItemID | ModelID
==================================
1 | 1 | 1
2 | 1 | 2
3 | 2 | 1
4 | 2 | 2
5 | 2 | 3
6 | 3 | 2
내가 표준 사용하여 검색 할 "비 포함, 포함을 가진이 시작, 함께 종료"방법.
LIKE 연산자를 사용하여 "포함", "함께 시작"또는 "끝냄"검색을 수행하면 정상적으로 작동하지만 항상 올바른 결과를 얻지 만 NOT LIKE 연산자를 사용할 때 문제가 발생합니다.
나는 모델 설명을 단순히 일을 생각 "C"(대소 문자 구분)를 포함하지 않는 모든 항목을 반환하려면 다음
이SELECT ItemID FROM ItemModels INNER JOIN Model ON ItemModels.ModelID = Model.ID WHERE Description NOT LIKE '%C%'
내가이 쿼리로 항목 1과 3을 반환하려면 두 모델 모두 'C'를 포함하는 모델을 가지고 있지 않지만이 쿼리는 ItemModel.ID = 3으로 레코드를 히트하고 "계속하지 않습니다. 아인 C 그래서 우리는 그것을 돌려주고 싶다! " 물론 이는 바람직하지 않은 행동입니다.
그래서 제 질문은 :
은이 링크 테이블의 모든 레코드를 포함 검색을 좋아하지 어떻게 할 수 있습니까?
ps. 나는이 문제를 추적하고 왜 그것이 일어나고 있는지를 생각해 내는데 몇 시간이 걸렸으므로 이것을 분명히하기를 희망한다. 그리고 그것을 고치는 방법을 해결하려고 노력하는 더 많은 시간!
"THEN 1 ELSE 0"을 "THEN 0 ELSE 1"로 바꿀 때까지이 작업이 이루어지지 않았습니다. 덕분에 그 전에는 크리스마스 기간과 모든 항목을 시험해 볼 기회가 없었습니다. –
@StevenWood. . . 대신에,'LIKE' 전에'NOT'을 제거했습니다. NULL 값이 있다면 꽤 동등하지는 않지만, 역시 작동 할 것이라고 생각합니다. –