MySQL查询 - 再次加入麻烦?

时间:2011-09-24 00:39:22

标签: mysql sql database join

我希望有人可以帮我解决一下我坚持的问题。

我有一个照片数据库的多输入搜索表单。一个文本框'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

这是可以解决的还是我完全做错了什么?如果是这样,有人可以告诉我我打算做什么:)

1 个答案:

答案 0 :(得分:1)

您正在执行LEFT JOIN,这意味着即使连接条件失败,它也会返回左表(photoSearch)的结果,

LEFT JOIN更改为JOIN