我有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来返回标题?
答案 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
如果您的表之间没有某种联系,就无法确定哪些值与哪些标题相关。