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)

これは、単一のクエリで行うのが最善でしょうか?それとも、さまざまなテーブルにまたがる複数のクエリで行うのが最善でしょうか?

前もって感謝します :)

4

1 に答える 1

4

単一のクエリで 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テーブルとソース テーブルの両方が取得され、オートコンプリート ドロップダウン用にうまくフォーマットできます。

于 2011-02-19T14:28:06.563 に答える