PHP / Mysql如何将另一个表加入到匹配搜索查询中

时间:2016-06-16 09:49:58

标签: mysql sql

所以我正在创建这个很酷的网站,但是在我想要加入另一个表以匹配搜索查询的地方时会陷入困境。我写了这段代码:

$sql = "SELECT *, MATCH(ppa, specialization)".
" AGAINST('$search_parameter' IN BOOLEAN MODE) ".
"AS score FROM ppa JOIN organizations o ".
"ON o.id = ppa.id WHERE MATCH(ppa, specialization) ".
"AGAINST('$search_parameter' IN BOOLEAN MODE) AND".
" location = '$location' ORDER BY score DESC ";"

它给了我这个错误:列'位置' in where子句不明确

SELECT *,
       MATCH(ppa, specialization) AGAINST('computer science' IN BOOLEAN MODE) AS score
FROM ppa
JOIN organizations o ON o.id = ppa.id
WHERE MATCH(ppa, specialization) AGAINST('computer science' IN BOOLEAN MODE)
  AND LOCATION = 'London'
ORDER BY score DESC.

如何解决此错误

3 个答案:

答案 0 :(得分:0)

两个表中都有location列。 MySQL无法决定在查询中使用哪一个,因此它会引发错误消息。通过将表名添加到字段引用(使用适当的表)来指示您要使用location字段的表:

...
AND ppa.LOCATION = 'London'
...

答案 1 :(得分:0)

您的代码出错,因为两个表中都有location字段(在ppa和组织中)。您在where条款中未提及location查询中提交的location = '$location'属于哪个表格。

您可以locationlocation = '$location'替换ppa.location中的o.location,以使其正确无误。

答案 2 :(得分:0)

SELECT ppa。*,        MATCH(ppa.ppa,ppa.specialization)AGAINST('计算机科学'IN BOOLEAN MODE)AS得分 从ppa作为ppa 加入组织o ON o.id = ppa.id 在哪里匹配(ppa.ppa,ppa.specialization)反对('计算机科学'在BOOLEAN模式中)   AND LOCATION ='伦敦' ORDER BY得分DESC。