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 に答える