所以我正在创建这个很酷的网站,但是在我想要加入另一个表以匹配搜索查询的地方时会陷入困境。我写了这段代码:
$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.
如何解决此错误
答案 0 :(得分:0)
两个表中都有location
列。 MySQL无法决定在查询中使用哪一个,因此它会引发错误消息。通过将表名添加到字段引用(使用适当的表)来指示您要使用location
字段的表:
...
AND ppa.LOCATION = 'London'
...
答案 1 :(得分:0)
您的代码出错,因为两个表中都有location
字段(在ppa和组织中)。您在where
条款中未提及location
查询中提交的location = '$location'
属于哪个表格。
您可以location
或location = '$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。