Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
左连接MYSQL全文搜索-跨表搜索多列_Mysql_Search - Fatal编程技术网

左连接MYSQL全文搜索-跨表搜索多列

左连接MYSQL全文搜索-跨表搜索多列,mysql,search,Mysql,Search,我有两张桌子: 表1:内容[标题、描述、url、类型id] 表2:流派[流派id,流派名称] 我正在尝试运行一个完整的搜索查询,这样如果有人搜索某个流派,就会返回内容的详细信息。同样,如果有人搜索标题,内容将正常返回。请注意,某些内容没有指定流派,因此需要在这种情况下使用 这是我的问题-我只是不知道如何让它工作 "SELECT content.*, genre.* FROM content LEFT OUTER JOIN genre ON (genre.genre_id=content.gen

我有两张桌子:

表1:内容[标题、描述、url、类型id] 表2:流派[流派id,流派名称]

我正在尝试运行一个完整的搜索查询,这样如果有人搜索某个流派,就会返回内容的详细信息。同样,如果有人搜索标题,内容将正常返回。请注意,某些内容没有指定流派,因此需要在这种情况下使用

这是我的问题-我只是不知道如何让它工作

"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";
“从内容左侧选择内容。*,类型。*”
打开(genre.genre\u id=content.genre\u id)
匹配位置(content.title、content.description)
针对(“$query”)
或匹配(流派、流派名称)
针对(“$query”)
content.url不为NULL,content.url“”限制$lowerlimit,10;

如果您有没有流派id的内容项,那么内部连接就不是一个好办法。这将排除任何没有流派id的内容项。改为使用左外部联接。这假设没有类型id没有相应内容项的类型。如果是后者,则需要在内容表中创建某种类型的虚拟行来处理此问题。如果这不合理,请告诉我,我会给你更多详细信息。

我不熟悉匹配**与**的
位置,但我相信它可以重写为:

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;
选择内容、类型*
从内容
左外连接类型
关于genre.genre\u id=content.genre\u id
其中(content.title,如“%”+“$query”+”%
或content.description,如“%”+“$query”+“%”
或genre.genre_名称,如“%”+“$query”+“%”)
并且content.url不为空
和content.url“”
限额$lowerlimit,10;

我还注意到,在您的查询中,在分号之前的末尾有一个额外的双引号。

您的标题是LEFT join,但您的代码显示内部join,可能就是这样?我很抱歉,我确实将其设置为LEFT join,但一直在尝试许多选项!嗨,Melanie-我现在使用了左外连接,但你是对的,我可能有一些没有内容的类型ID(我可以强制它不是这样的…)不幸的是,查询仍然显示errorshmm如果我不在通配符和查询之间使用+符号,这是可行的-我试图避免类似的情况,尽管我听说它有性能问题