Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.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
Php 在MySQL中搜索两个不同列的表,尝试左连接获取语法错误?_Php_Mysql_Sql_Full Text Search - Fatal编程技术网

Php 在MySQL中搜索两个不同列的表,尝试左连接获取语法错误?

Php 在MySQL中搜索两个不同列的表,尝试左连接获取语法错误?,php,mysql,sql,full-text-search,Php,Mysql,Sql,Full Text Search,下面是我的陈述(我得到一个语法错误) 基本上,我有两个表,一个有上传(我需要搜索它们的标题、描述和文件路径),第二个表有我也需要搜索它们标题的所有课程 我正试图用上面的字段和标题字段上的课程表在uploads表上进行全文搜索 我尝试了以下其他查询,但没有结果 SELECT *, MATCH( U.title, U.description, U.filepath) AGAINST('ARTH 5180B asdfdsaf') FROM uploads AS U LEFT JOIN courses

下面是我的陈述(我得到一个语法错误)

基本上,我有两个表,一个有上传(我需要搜索它们的标题、描述和文件路径),第二个表有我也需要搜索它们标题的所有课程

我正试图用上面的字段和标题字段上的课程表在uploads表上进行全文搜索

我尝试了以下其他查询,但没有结果

SELECT *, MATCH( U.title, U.description, U.filepath) AGAINST('ARTH 5180B asdfdsaf') 
FROM uploads AS U LEFT JOIN courses AS C ON U.Course_id = C.Id WHERE MATCH(C.title) 
AGAINST('ARTH 5180B asdfdsaf')

非常感谢

在第一个查询中,正如Marc B所提到的,匹配的位置是错误的。在第二种情况下,您似乎正在使用左侧连接中的WHERE,而此时您应该使用AND,即:

SELECT *, MATCH( U.title, U.description, U.filepath) AGAINST('ARTH 5180B asdfdsaf') 
FROM uploads AS U LEFT JOIN courses AS C 
                  ON U.Course_id = C.Id 
                  AND MATCH(C.title) AGAINST('ARTH 5180B asdfdsaf')

在第一个查询中,正如Marc B所提到的,匹配项位于错误的位置。在第二种情况下,您似乎正在使用左侧连接中的WHERE,而此时您应该使用AND,即:

SELECT *, MATCH( U.title, U.description, U.filepath) AGAINST('ARTH 5180B asdfdsaf') 
FROM uploads AS U LEFT JOIN courses AS C 
                  ON U.Course_id = C.Id 
                  AND MATCH(C.title) AGAINST('ARTH 5180B asdfdsaf')

语法错误到底是什么?您的第一个查询是错误的,因为匹配项位于错误的位置。在第二次尝试中,它位于正确的位置。在第二次尝试中,我得到了一个名为“MATCH(U.title,U.description,U.filepath)的新列('ARTH 5180B asdfdsaf'),它具有wierd双值,这是因为您已将MATCH调用放入查询的字段列表中。你不必把它放在那里。它只出现在
where
子句中是非常好的。语法错误到底是什么?您的第一个查询是错误的,因为匹配项位于错误的位置。在第二次尝试中,它位于正确的位置。在第二次尝试中,我得到了一个名为“MATCH(U.title,U.description,U.filepath)的新列('ARTH 5180B asdfdsaf'),它具有wierd双值,这是因为您已将MATCH调用放入查询的字段列表中。你不必把它放在那里。它只出现在
where
子句中是非常好的。