从多个表自动完成

时间:2011-02-19 14:22:29

标签: php mysql autocomplete multiple-tables

我想知道从多个表中获取自动完成结果的最有效方法是什么?

警告;我希望能够从哪个表中识别记录。

例如,给定这些示例表:

+- People
   +- id
   +- name
   +- age

+- Places
   +- id
   +- name
   +- distance

+- Things
   +- id
   +- name
   +- color

虽然这个问题包含了一些任意数据,但这里的主要焦点是name列(尽管这些可能是其他的,或者每个表被查询多个)

无论如何,我正在试图弄清楚如何查询这些表中的每一个数据是否自动完成,并返回数据以及它从哪个表中。例如,字母A的输出可能如下所示:

Apple (Things)
Amy (People)
Aaron (People)
Anaheim (Places)
Axe (Things)

使用单个查询或跨各个表的多个查询最好能实现这一目标吗?

提前致谢:)

1 个答案:

答案 0 :(得分:4)

您可以在单个查询中以联合身份执行此操作:

SELECT name, 'Things' as source FROM Things WHERE name LIKE 'A%'
UNION ALL
SELECT name, 'People' as source FROM People WHERE name LIKE 'A%'
UNION ALL
SELECT name, 'Places' as source FROM Places WHERE name LIKE 'A%'

现在您将同时获得匹配的name和源表,并且您可以很好地格式化自动完成下拉菜单。