나는 누군가가 내가 붙어있는 질문으로 나를 도울 수 있기를 바라고있다.MySQL 쿼리 - 문제 해결 ... 다시 참여 하시겠습니까?
나는 사진 데이터베이스에 대해 여러 입력 검색 양식을 가지고 있습니다. 하나의 텍스트 상자 'searchWords'는 내 'PhotoSearch'표를 검색하고 다른 텍스트 상자 'specificPeople'은 특정 인물을 검색하기 위해 'people'표를 검색합니다. 예를 들어
, 사용자가 상자 하나에 "도체스터 호텔 런던"을 검색 할 수 있으며 "브래드 피트"상자 2.
이 내가 노력하고 무엇인가 그러나 도체스터 호텔 "에 대한 결과를 다시 가져 전용 런던 "이라는 단어는 내 인물 검색을 무시합니다.
SELECT photoSearch.photoID, Left(photoSearch.caption,25), photoSearch.allPeople, photoSearch.allKeywords
FROM photoSearch
LEFT JOIN (photoPeople INNER JOIN people ON photoPeople.peopleID = people.peopleID)
ON photoSearch.photoID = photoPeople.photoID AND people.people IN ('kate moss','jamie hince')
WHERE MATCH (caption, allPeople, allKeywords) AGAINST ('+dorchester +hotel' IN BOOLEAN MODE)
AND
photoSearch.dateCreated BETWEEN '2011-07-21' AND '2011-10-23'
ORDER BY photoSearch.dateCreated
전체 텍스트 검색은 완벽합니다. 내 테이블 스키마는 다음과 같습니다.
**photoSearch**
photoID INT/AUTO/INDEX
caption VARCHAR(2500)/FULLTEXT
allPeople VARCHAR(300)/FULLTEXT
allKeywords VARCHAR(300)/FULLTEXT
dateCreated DATETIME/INDEX
**photoPeople**
photoID INT/INDEX
peopleID INT/INDEX
**people**
peopleID INT/INDEX
people VARCHAR(100)/INDEX
이 수정 가능 파일인지 또는 완전히 잘못된 것입니까? 그렇다면, 누군가가 당신은 조건이 실패에 가입하는 경우에도이 왼쪽 테이블 (photoSearch
)에 대한 결과를 반환합니다 의미 LEFT JOIN
을하고 있습니다 :)
전설, 감사합니다 - 3 분 대답은 꽤 좋습니다 :) – TheCarver
사실, 다른 질문이 있습니다 - 죄송합니다. 저는 Brad Pit, Angelina Jolie라는 사진이 한 장의 사진에 포함되어있는 것을 검색하려고합니다. 그러나 Brad Pitt의 모든 사진과 Angelina Jolie의 모든 사진을 반환하기 때문에 IN 절이 잘못되었다고 생각합니다. "또는"절처럼 행동합니다. 두 이름 검색을 모두 검색해야합니다. 제안 할 수있는 것이거나 새로운 질문을 만들어야합니까? – TheCarver