【发布时间】:2012-08-10 08:28:16
【问题描述】:
我正在构建一个 Mysql 全文搜索,我有 4 个表要搜索。当我在搜索查询中仅使用单个表时它可以工作,但是当我在查询中使用多个表时它不起作用。我也不想在查询中使用 UNION ALL,因为我使用复选框选择选项在单个或多个表中执行搜索。
对多个表的 MySQL 查询不起作用。
$sqlquery = mysql_query("(SELECT * FROM table1, table2, table3, table4 WHERE MATCH (pflink, title) AGAINST ('%$keyword*%' IN BOOLEAN MODE) )ORDER by pflink desc, $orderby $sortby LIMIT $rowsperpage OFFSET $offset ")or die (mysql_error());
它给了我错误Column 'pflink' in where clause is ambiguous
使用单表查询有效。
$sqlquery = mysql_query("(SELECT * FROM table1 WHERE MATCH (pflink, title) AGAINST ('%$keyword*%' IN BOOLEAN MODE) )ORDER by pflink desc, $orderby $sortby LIMIT $rowsperpage OFFSET $offset ")or die (mysql_error());
HTML 复选框代码
<input name="all-tables" type="checkbox" value="true" checked="checked" id="check-all" >
<input name="table1" type="checkbox" value="true" disabled="disabled" >
<input name="table2" type="checkbox" value="true" disabled="disabled" >
<input name="table3" type="checkbox" value="true" disabled="disabled" >
<input name="table4" type="checkbox" value="true" disabled="disabled" >
请建议任何可能的方式来修改此查询以使其适用于多个表。
谢谢。
【问题讨论】:
-
因为你的mysql引擎对pflink属于哪个表感到困惑:)
-
@Sabin pflink 和 title 在所有表中,实际上所有表的结构相同但值不同。
-
我希望你已经在每 4 个表上定义了索引??同样,如果您有所有具有相同结构的表,pflink 仍然是模棱两可的,因为您还没有定义 pflink 引用哪个表。此外,到目前为止我知道,全文搜索不会在多个表中工作。类似讨论stackoverflow.com/questions/1241602/…