【问题标题】:Autocomplete from multiple tables从多个表自动完成
【发布时间】:2011-06-30 09:24:24
【问题描述】:

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

需要注意的是;我希望能够确定记录来自哪个表。

例如,给定这些示例表:

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

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

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

虽然包含一些针对此问题的任意数据,但这里的主要关注点是 name 列(尽管这些可能是其他内容,或者每个正在查询的表有多个)

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

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

这最好通过单个查询还是跨多个表的多个查询来完成?

提前致谢:)

【问题讨论】:

    标签: php mysql autocomplete multiple-tables


    【解决方案1】:

    您可以在一个查询中使用 at union 来完成:

    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 和源表,并且您可以为您的自动完成下拉内容很好地格式化。

    【讨论】:

    • 太棒了 :) 谢谢克劳斯·拜斯科夫·霍夫曼;我倾向于UNION,但是这个实现让我望而却步。 (我会在 3 分钟内接受)
    • 如果您要处理许多记录,正确的索引和结果缓存是否可以接受查询的执行时间?
    • 这会比只使用一张由所有实体组成的表并只查询一张表更昂贵吗?
    猜你喜欢
    • 1970-01-01
    • 2014-03-29
    • 2023-03-23
    • 2018-06-17
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 2011-04-10
    • 2013-01-06
    相关资源
    最近更新 更多