jQuery UI自动完成,用PHP / MySQL搜索2个表

时间:2014-07-25 17:55:00

标签: php jquery mysql jquery-ui jquery-ui-autocomplete

我有2个需要搜索的表,我在这里列出了重要的表和字段:

Table: FAQs
Columns: id, title

Table: FIELD_VALUES
Columns: id, value

所以基本上表格FAQs都有一个问题'title',表FIELD_VALUES包含的信息可以与表FAQ中的问题相关。因此,在这种情况下,“价值”是HTML格式的答案。我需要做的是在表格FAQ中搜索“title”,并在表FIELD_VALUES中搜索“value”。然后它应该只从表格FAQ中返回唯一的问题'title'。

我已经使用以下方法从常见问题解答返回'标题':

SELECT title FROM FAQs WHERE title LIKE '%".$_REQUEST['term']."%'"

这样做没问题,但我猜我需要做某种形式的UNION然后用JOIN来返回标题?

2 个答案:

答案 0 :(得分:1)

我理解它,因为你想在所有情况下都返回标题。如果搜索与FAQ中的标题匹配,则FIELD_VALUES中的值或两者匹配。然后你应该加入:

SELECT FAQs.title FROM FAQs
JOIN FIELD_VALUES ON FIELD_VALUES.id = FAQs.id
WHERE FAQs.title LIKE '%".$_REQUEST['term']."%' OR
FIELD_VALUES.value LIKE '%".$_REQUEST['term']."%'

答案 1 :(得分:0)

如果您将一个外键添加到FIELD_VALUES表中,您应该能够达到您想要的效果:

Table: FAQs Columns: id, title

Table: FIELD_VALUES Columns: id, faqId_FK, value

然后你的SQL看起来像:

$title = SELECT * FROM FAQs WHERE title LIKE '%". $_REQUEST['term']."%';
if(empty($title)) {
  $valueId = SELECT faqId_FK FROM FIELD_VALUES WHERE value LIKE '%". $_REQUEST['term']."%';
  if(!empty($valueId)) {
    $title = SELECT title FROM FAQs WHERE id = $valueId;
  }
}  

echo $title

如果您的表之间没有某种联系,就无法确定哪些值与哪些标题相关。