글쎄, 주로 데이터베이스의 잘못된 구조로 인해 문제가 발생했습니다. 코드가 매우 복잡하고 테이블이 너무 커서이 구조를 수정하는 옵션이 아닌 것 같은 회사를 위해이 코드를 작성했습니다. 어쨌든 MYSQL like + group
, 내 문제는 내가에 어떻게 든 그룹 문자열에 혼자되지 않습니다 값을 ... 그들은 쉼표로 구분 된 값을 저장하는 ... 시도하고 그래서이 될 것입니다 같은field: "category" value: 'var1, var2, var3'
그리고 나는이 쿼리를 사용하여 검색됩니다
SELECT name, category
FROM companies
WHERE (MATCH(name, category) AGAINST ('$search' IN BOOLEAN MODE)
OR category LIKE '$search%')
그것은 (그것이 비록 3 개 변수에 국한되지 솔로 이상 많은 수 있습니다) 예를 들어 VAR2에 대한 일치 것을 나는 그것을 수동으로 분할 것 PHP, 문제 없습니다. 내가 충분한 경기를 얻지는 못하지만, 나는 예를 들어. 다른 검색으로 10 일치. 좀 더 구체적으로 말하자면 나는 자동적 인 기능을 만들고 있는데, 이는 예를 들어 "moto %"를 모터 바이크, 모터 단독 또는 다른 것과 일치시키고 싶다. 그러나 나는 같은 값을 얻는다. 결과는 "오토바이"를 포함하고 있으며 나는 그들을 필터링하는 방법을 모르겠다. 왜냐하면 나는 나쁜 DB 구조 때문에 GROUP BY를 사용할 수 없기 때문이다 ...
나는 이것을 발견했다 : T-SQL - GROUP BY with LIKE - is this possible? 그것은 해결책이 될 것입니다. 그러나 제가 시도한 한, 내가 원했던대로 작동시키지 못했습니다. 거기에이 작업 주위에 나는 아마도 DB 구조를 수정해야 할 수도 절대적으로 방법이 없습니다 (그러나 이것은 정말 마지막 옵션이어야합니다)
좋아, 다른 옵션을 찾는 대신 해보겠다. 값을 새로운 DB로 나누는 방법에 대해 제안이 있습니까? 순수 MYSQL 또는 PHP를 사용하여 – Colandus
새 테이블에 내가 의미하는 ... 난 그냥 그것을 검색하거나 아무것도 찾지 못하면 새로운 질문을 만듭니다. – Colandus
새 테이블을 만들고 'SELECT name'(또는 고유 식별자로 사용하기로 선택한 항목)'FROM companies' 쿼리를 실행 한 다음 PHP를 사용하여 category의 내용을 explode()합니다. 이렇게 생성 된 각 카테고리에 대해 foreach 루프를 사용하여 새 테이블에 ID와 카테고리를 삽입하십시오. – starshine531