多個數據源以下查詢工作正常,從一個表拉公司的名稱爲jquery的UI自動完成:Jquery的UI自動完成從使用UNION查詢
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中工作。 =(
雖然我不知道您的UI自動填充表單的工作方式或期望的結果,但我還是比較喜歡。當你組合表時設置?你的用戶界面有多少列? – MacGyver
對不起,只是試圖保持簡單。上面的兩個查詢都導致了一個名爲「name」的列。 jquery期待一個帶有標籤和值的數組,我將這兩個數組分配給「name」數組。不知道這是否是最佳做法,但我從我在網上找到的一個例子中得到它,它對於更簡單的查詢來說工作得很好。下面是相關的PHP: –
而($行= mysql_fetch_array([SQL查詢],MYSQL_ASSOC)) \t { \t \t $數據[] =陣列( \t \t \t '標籤'=> $行['名'], \t \t \t'value'=> $ row ['name'] \t \t); \t} –