0

我正在构建一个 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" >

请提出任何可能的方法来修改此查询以使其适用于多个表。

谢谢。

4

1 回答 1

0

很久以前,我遇到了类似的情况。我有多个表格可以使用全文,但我不知道该怎么做。我搜索但找不到路。所以最后我想出了以下想法

1. Make another table say "keywords", with fields title, description , item_id, and the table data belongs to.
2. make a code to fetch all title and description from table1,table2 and so on and insert it to keywords.
3. Make keywords table suitable for full text search.
4. when user searches, search keyword table. Retrieve relevant value from table1, table 2 etc from the recordset (as you get item id and table from the full text search query).

这样做的好处是查询会更快更容易。

希望这可以帮助

于 2012-08-10T08:55:14.183 回答