Jquery UI使用UNION查询从多个数据源自动完成


Jquery UI Autocomplete from multiple data sources using UNION query

下面的查询可以正确地将公司名称从一个表中拉入jquery UI自动完成:

SELECT name FROM company WHERE name LIKE "'. mysql_real_escape_string($_REQUEST['term']) .'%"

结果被循环到一个数组中并编码为JSON,然后返回给jquery并正确显示自动完成建议。

我试图修改它从两个或更多的表:

SELECT name
FROM (
SELECT name
FROM company
UNION ALL SELECT CONCAT( fname,  ' ', lname ) 
FROM contact
) AS name
WHERE name LIKE  "'. mysql_real_escape_string($_REQUEST['term']) .'%"

本例中的目标是让自动完成列表包含公司名称和联系人名称。当我独立于应用程序运行查询时(仅使用PhpMyAdmin控制台),使用一个示例搜索词,它成功地显示了所需的结果。然而,在我的jquery ui自动完成表单的上下文中,它不返回任何自动完成建议。

我将感谢任何建议。谢谢!

EDIT:示例SQL结果

这是我得到的结果,当我在PhpMyAdmin与测试查询"mi"运行这些查询。

原始的单表源查询:

Generation Time: Jul 20, 2011 at 01:40 AM
Generated by: phpMyAdmin 3.3.9 / MySQL 5.5.8
SQL query: SELECT name FROM company WHERE name LIKE "mi%" LIMIT 0, 30 ; 
Rows: 6
name
[rows removed]

。万达建议修改:

Generation Time: Jul 20, 2011 at 01:50 AM
Generated by: phpMyAdmin 3.3.9 / MySQL 5.5.8
SQL query: SELECT temptable.name FROM ( SELECT name as name FROM company UNION ALL SELECT CONCAT( fname, ' ', lname ) as name FROM contact ) AS temptable WHERE temptable.name LIKE "mi%" ; 
Rows: 15
name
[rows removed]

都是有效的SQL,结果是一个包含名称的一列表,但只有第一个在jquery ui中工作。= (

见下面的粗体文本。

选择易被诱惑的。[名字]
FROM

SELECT name as [name]
FROM company

UNION ALL

选择修剪(ISNULL(帧 ,'') + ' ' + ISNULL (lname")[名字]
FROM contact

) AS temptable
WHERE
temptable.name LIKE "。mysql_real_escape_string ($ _REQUEST [' ']) .'%"