以下查询可以正常将公司名称从一个表中提取到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自动填充表单的上下文中,它不会返回任何自动完成建议。
我将不胜感激任何建议。谢谢!
编辑:示例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中工作。 =(
答案 0 :(得分:1)
请参见下面的粗体文字。
SELECT temptable。[name]
FROM(
选择名称作为[名称]
来自公司
UNION ALL
选择 TRIM(ISNULL(fname,'')+''+ ISNULL(lname,''))作为[名称]
来自联系人
)AS temptable
在哪里
temptable.name LIKE“'。mysql_real_escape_string($ _ REQUEST ['term'])。'%”