2017-05-02 43 views
0

我試圖使用AJAX創建一個電源搜索,它在3個不同的表中查找結果,並在單個表中返回結果。我已經通過向我的數據庫添加了3個調用(每個表一個)來完成此操作,但是我覺得這不是最佳的。單個查詢在幾個表中搜索並生成1個結果

用戶將在搜索字段中輸入內容,然後使用AJAX將他們鍵入的內容發送到數據庫。這個例子儘可能簡單以便於理解。

實施例: 用戶輸入:測試。

AJAX調用:

SELECT 'User' AS table, f_name AS `name`, city FROM people WHERE f_name LIKE '%test%'; 
SELECT 'Company' AS table, `name`, city FROM companies WHERE `name` LIKE '%test%'; 
SELECT 'Store' AS table, `name`, city FROM stores WHERE `name` LIKE '%test%'; 

我不解釋我是如何生成的表格形式Ajax調用,因爲這部分解決。我目前正在做PHP是:

$sql = SELECT .... FROM people ....; 
$res = mysqli... 
while($row = mysqli_fetch...) { 
    echo "<tr><td>{$row[table]}</td>...." 

$sql = SELECT .... FROM companies ....; 
$res = mysqli... 
while($row = mysqli_fetch...) { 
    echo "<tr><td>{$row[table]}</td>...." 

$sql = SELECT .... FROM stores ....; 
$res = mysqli... 
while($row = mysqli_fetch...) { 
    echo "<tr><td>{$row[table]}</td>...." 

結果:

+--------------+-------+------+ 
| table  | name | city | 
+--------------+-------+------+ 
| User   | test1 | 13 | 
| User   | test2 | 25 | 
| Company  | testc | 13 | 
| Store  | stest | 33 | 
+--------------+-------+------+ 

是否有更簡單的方法來達到這個目的,使用較少的HTTP請求?也許使用視圖?

回答

0

我想這可能只是一個評論,但我不能評論如此:爲什麼不使用UNION

SELECT 'User' AS table, f_name AS `name`, city FROM people WHERE f_name LIKE '%test%' 
UNION 
SELECT 'Company' AS table, `name`, city FROM companies WHERE `name` LIKE '%test%' 
UNION 
SELECT 'Store' AS table, `name`, city FROM stores WHERE `name` LIKE '%test%' 

這會給你你的結果,但只有一個查詢字符串。

+0

謝謝!我不知道這個功能,我試着用JOIN,但顯然它不起作用。 –

+0

快速注意,如果有人讀這個答案:刪除個人查詢之間的「;」。 –

相關問題