2014-11-25 92 views
0

我已經在這裏詢問了Query Logic SQL,但沒有得到回覆(可能與我的數據呈現)我真的希望有人可以看看這個,並提供他們關於如何完成這項工作的意見。將非常感謝任何幫助。SQL查詢邏輯2

我有一個看起來像

用戶表

id | name  | 
_______________ 
1 | John  | 
2 | Mary  | 
3 | Charles | 
4 | Mike  | 
5 | Lucy  | 
6 | Debbie | 

配對錶中的SQL表中的數據:

main_id | pair_id | 
_____________________ 
    1  | 2  |  
    1  | 3  | 
    2  | 4  | 
    2  | 5  | 
    3  | 6  |  
    3  | 1  | 

渲染輸出給用戶的時候,我的HTML表是這樣的,在sql中使用group_by groupconcat。現在

main_name | paired_names 
    John | Mary, Charles 
    Mary | Mike, Lucy 
    Charles | Debbie, John 

,問題是搜索(通配符搜索)期間

說,用戶將輸入 「查爾斯」 ......

的輸出要求是:

main_name | paired_names 
    John | Mary, Charles 
    Charles | Debbie, John 

因爲它將在對錶中的兩列中進行通配符搜索。

現在,我所做的是我從數據庫操作結果集,但這已分頁,並被告知,如果我查詢所有數據,然後操作後,它會影響系統性能。

我希望有人會提供他們的建議,如何完成這項工作。

如果需要,我可以提供進一步的細節。

期待您的來信。

+0

請告訴我們您的SQL語句,你有這麼遠 – Giwwel 2014-11-25 10:31:47

+0

那就是: 選擇 user_1.name, GROUP_CONCAT(user_2.name分離機「,「)作爲paired_names 從pairing_table 左連接用戶爲USER_1上pairing_table.main_id = users.id 左連接用戶爲user_2上pairing_table.paid_id = users.id GROUP_BY pairing_table.main_id ?但我怎麼添加查詢到來自該列得到的名稱,因爲SQL不承認在 – derping 2014-11-26 03:42:24

回答

0

檢查fiddle

SELECT users.id,GROUP_CONCAT(pair_id) FROM (SELECT users.id, 
users.name,pairing.main_id,pairing.pair_id 
    FROM users, pairing 
WHERE pairing.main_id=users.id 

) AS t1 JOIN users ON users.id=t1.id GROUP BY users.id; 
+0

嗨別名,這裏是我建的查詢: 那就是: 選擇 user_1.name, GROUP_CONCAT(user_2.name SEPARATOR「,「)作爲paired_names 從pairing_table 左加入用戶作爲USER_1上pairing_table.main_id = users.id 左加入用戶作爲user_2上pairing_table.paid_id = users.id GROUP_BY pairing_table.main_id 但我如何添加一個查詢來從這兩列獲取名稱?因爲sql不能識別別名? – derping 2014-11-26 03:42:47

+0

@derping你可以通過php獲得名稱[hash map](http:// stackoverflow。com/a/6841577/2151290) – 2014-11-26 03:59:21

+0

@derping爲進一步你可以看到[PHP:哈希映射](http://progzoo.net/wiki/PHP:Hash_Maps)在這裏 – 2014-11-26 04:07:04