我希望有人可以帮我解决一下我坚持的问题。
我有一个照片数据库的多输入搜索表单。一个文本框'searchWords'用于搜索我的'photoSearch'表,另一个文本框'specificPeople'搜索'people'表,以搜索特定的人。
例如,用户可以在方框1中搜索“Dorchester Hotel London”,在方框2中搜索“Brad Pitt”。
这就是我正在尝试的但它只会带回“Dorchester Hotel London”的结果,它忽略了我的人物搜索:
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
如果我把JOIN带走,那么全文搜索是完美的。我的表架构有点像这样:
**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
这是可以解决的还是我完全做错了什么?如果是这样,有人可以告诉我我打算做什么:)
答案 0 :(得分:1)
您正在执行LEFT JOIN
,这意味着即使连接条件失败,它也会返回左表(photoSearch
)的结果,
将LEFT JOIN
更改为JOIN
。