下面的查询可以正确地将公司名称从一个表中拉入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 [' ']) .'%"