2011-09-24 4 views
2

나는 누군가가 내가 붙어있는 질문으로 나를 도울 수 있기를 바라고있다.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을하고 있습니다 :)

답변

1

, 일을 할 내가 의미있는 무슨 나를 보여줄 수

LEFT JOINJOIN으로 변경하십시오.

+0

전설, 감사합니다 - 3 분 대답은 꽤 좋습니다 :) – TheCarver

+0

사실, 다른 질문이 있습니다 - 죄송합니다. 저는 Brad Pit, Angelina Jolie라는 사진이 한 장의 사진에 포함되어있는 것을 검색하려고합니다. 그러나 Brad Pitt의 모든 사진과 Angelina Jolie의 모든 사진을 반환하기 때문에 IN 절이 잘못되었다고 생각합니다. "또는"절처럼 행동합니다. 두 이름 검색을 모두 검색해야합니다. 제안 할 수있는 것이거나 새로운 질문을 만들어야합니까? – TheCarver