我有两张桌子:
表1:内容[title,description,url,genre_id] 表2:流派[genre_id,genre_name]
我正在尝试运行FULL SEARCH查询,以便在有人搜索类型时,将返回内容中的详细信息。同样,如果有人搜索标题,则内容将正常返回。请注意,某些内容没有分配类型,因此需要在此方案中工作。
这是我的查询 - 我无法弄清楚如何让它运作......
"SELECT content.*, genre.* FROM content LEFT OUTER JOIN genre
ON (genre.genre_id=content.genre_id)
WHERE MATCH (content.title, content.description)
AGAINST ('$query')
OR MATCH (genre.genre_name)
AGAINST ('$query')
AND content.url IS NOT NULL AND content.url <> '' LIMIT $lowerlimit, 10";
答案 0 :(得分:0)
如果您的内容项目没有genre_id,那么INNER JOIN就不是了。这将排除任何没有genre-id的内容项。请改用LEFT OUTER JOIN。这假定没有genre_id没有相应内容项的类型。如果是后者,则需要在Content表中创建某种虚拟行来处理此问题。如果这没有意义,请告诉我,我会给你更多细节。
答案 1 :(得分:0)
我对WHERE MATCH ** AGAINST **
并不熟悉,但我相信它可以改写为:
SELECT content.*, genre.*
FROM content
LEFT OUTER JOIN genre
ON genre.genre_id = content.genre_id
WHERE (content.title LIKE '%' + '$query' + '%'
OR content.description LIKE '%' + '$query' + '%'
OR genre.genre_name LIKE '%' + '$query' + '%')
AND content.url IS NOT NULL
AND content.url <> ''
LIMIT $lowerlimit, 10;
我在你的查询中还注意到,在分号之前还有一个额外的双引号。