从多个表中自动完成填充

3

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

其中一个限制条件是:我希望能够确定记录来自哪个表。

例如,给定以下示例表:

+- 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个回答

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和源表,然后你可以为自动完成下拉框格式化它们。

1
太棒了 :) 感谢 Klaus Byskov Hoffmann;我倾向于使用 UNION,但这种实现方式却让我困扰。 (我将在3分钟内接受) - Dan Lugg
1
如果你正在处理许多记录,通过正确的索引和结果缓存,查询的执行时间是否可接受? - html_programmer
这会比只有一个包含所有实体的表并查询该表要昂贵吗? - SexyBeast

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接