그래서 매개 변수가 있습니다. 말할 수 :각 단어의 SQL AND 조건에 쉼표로 구분 된 문자열을 사용해야합니다.
@Tags = 'Red,Large,New'
을 나는
이
어떻게 할 수있는 필드가 "빨강, 대형, 새로운, SOMETHINGELSE, AndSomethingElse"를 포함하는 하나 개의 특정 행을 말할 수 있습니다 [태그]라는 내 테이블에 필드가
SELECT * FROM MyTable WHERE
Tags LIKE 'FirstWordInString'
AND Tags Like 'SecondWordInString'
AND Tags Like 'ThirdWordInString'
그러나 정지 곳은 알고 : 나는 떨어져 기본적으로 내가 이해를 입력 할 수 있습니다 다음과 같은 논리를 달성 것을 파괴하지만 내가 아는 잘못입니까? 한 단어 만 있다면 알아? 아니면 둘? 아니면 셋?
워크 플로 :
사람이 태그를 클릭하고 데이터 세트는 해당 태그에 의해 필터링됩니다. 다른 태그를 클릭하면 태그가 검색 창에 추가되고 데이터 세트가 해당 태그 등으로 필터링됩니다.
감사합니다!
는 업데이트 :
는이 제품을 기반으로 상황이다.
- 제품을 만들면 작성자는 쉼표로 구분 된 검색 태그를 입력 할 수 있습니다. 제품이 삽입되면
- 은 검색 태그는 제품 테이블에, 나는 그들을 표시 문자열로 분리 한 필드가,
그래서 별도의 테이블이라고 ProductTags (제품 ID, TagID)에 삽입 응용 프로그램 측면에서 이러한 목적으로 사용되는 태그는 ProductID를 기반으로 행별로 구분 된 ProductTag 테이블에서도 찾을 수 있습니다.
검색에있는 모든 태그가 해당 제품에 존재하는 경우 결과를 제공하는 선택 항목에 조건을 배치하는 방법을 잘 모르겠습니다.
SELECT *
FROM MyTable
WHERE ','+Tags+',' LIKE '%,FirstWordInString,%'
AND ','+Tags+','Like '%,SecondWordInString,%'
AND ','+Tags+','Like '%,ThirdWordInString,%'
UPDATE :
나는 그냥 쉼표로 구분 된 필드를 사용하는 것이 더 쉽습니다,하지만 아마도 내가 그냥 와일드 카드를 추가 할 필요가 해당 테이블 (ProductTags)
데이터베이스를 정상화하면이 작업이 _a lot_ easy _and_ faster가됩니다. – Ben
@Ben - 정규화 된 구조로 관계 분할 쿼리가 그다지 빠르지 않고 쉽습니다. 이 디자인을 옹호하는 것은 아닙니다. DB를 재 설계하고 쿼리가 사소한 것으로 예상되면 OP가 실망 할 수도 있습니다. –
@Ben 더 명확하게하기 위해 내 질문이 업데이트되었습니다. 데이터베이스를 정규화했습니다. – user1447679