2011-11-25 6 views
-2
SELECT * FROM 
companies as C 
LEFT JOIN usersSearchCache as UC ON C.id = UC.objectId 
WHERE UC.userId = ? AND C.keywords LIKE ? 

가입 : 회사의 키워드가 일치하는 곳 usersSearchCache, 회사 테이블의 ID에 연결되는 OBJECTID, ObjectId가 을 가지고, 내가 검색해야 사용자의 캐시에 저장합니다.MySQL은 내가 테이블이 그래서 기본적으로 다른 테이블 검색을

위 쿼리는 작동하지 않지만 그 이유는 알 수 없습니다.

+0

이 명령을 실행하는 데 사용하는 일부 오류 및 코드를 게시 할 수 있습니까? 당신이 제공 한 매개 변수뿐 아니라 예상 결과도 마찬가지입니까? – Nonym

+0

오류가 발생하거나 결과가 표시되지 않습니까? ?가 대체 된 완전한 쿼리를 추가 할 수 있습니까? – ben

+0

메신저에는 아무런 오류나 결과가 없지만 매개 변수가 맞는지 확인하십시오. –

답변

0

사용자 테이블에 사용자가 있고 모든 사용자가 개체 페이지를 방문 할 수 있습니다.이 페이지를 방문하면 userSearchCache 테이블에 새 레코드가 만들어집니다. 이제

userId,objectId 
1,123 
1,345 

같은

select * FROM userSearchCache UC 
where UC.userId = ? 

반환 뭔가 내가 얻은 것은 사용자가 검색 할 개체의 이름을 삽입하는 검색 필드는, 그래서 현재의 쿼리는 다음과 같습니다

JOIN companies C ON UC.object_id=C.id 

userId,objectId,keywords 
1,123,"yoga,savate,pilates" 
1,345,"tennis,biking,soccer" 

는 "자전거"를 찾기 위해, 나는 LIKE '% 자전거 %'

select * 
FROM userSearchCache UC 
JOIN companies C ON UC.object_id=C.id 
where UC.userId = ? AND c.keywords LIKE '%'+?+'%' 
을 사용

키워드 매개 변수에 이미 와일드 카드 문자 '%'가 포함되어 있습니까

관련 문제