2017-06-21 144 views
0

編碼自定義搜索框尋找星際爭霸遊戲,但我不知道如何做查詢。例如爲用戶搜索「球員:丹尼爾,誰發揮:蟲族VS人族玩家在‘X’圖」查詢獲取來自自定義搜索的特定數據

所以我有這個表:

賭檯

+------------+----------+-------------+----------+ 
| game_id | map | match | winner | 
+------------+----------+-------------+----------+ 
|  7  |  y |  1v1  | 1  | 
|  8  |  x | 1v1v1 | 2  | 
|  9  |  w | 1v1v1 | 3  | 
|  10  |  x |  1v1  | 1  | 
+------------+----------+-------------+----------+ 

表選手

+------------+----------+-------------+----------+ 
| game_id | player |Civilization | team | 
+------------+----------+-------------+----------+ 
|  7  | Arturo | protos | 1  | 
|  7  | Daniel | zerg  | 2  | 
|  8  | Ale  | Terran | 1  | 
|  8  | Maria | Protos | 2  | 
|  8  | Daniel | zerg  | 3  | 
|  9  | Pablo | zerg  | 1  | 
|  9  | Ale  | protos | 2  | 
|  9  | Maria | protos | 3  | 
|  10  | Daniel | zerg  | 1  | 
|  10  | Oscar | terran | 2  | 
+------------+----------+-------------+----------+ 

有了正確的查詢我還得:

Game_id:8,1v1v1,丹尼爾(Z ERG)與瑪麗亞(PROTOS)與ALE(人族),地圖:X
Game_id:10,1V1,丹尼爾(蟲族)VS奧斯卡(人族),地圖:X

這裏的問題是我如何獲得遊戲在哪裏存在一個丹尼爾球員和異蟲文明,並且在同一個game_id ??中一個對手有一個人族文明?而且這個遊戲在x地圖中播放?

PD:當你注意到每個遊戲可以有不同的玩家大小。請幫忙。非常感謝

+0

這聞起來像是功課。你嘗試過什麼嗎? –

+0

什麼都沒有,我不知道該怎麼做:( – Mael

+0

至少,你應該也包括預期的輸出是什麼 –

回答

0

試試這個select g.game_id, GROUP_CONCAT(CONCAT(p.player,'(', p.Civilization, ')-',g.map) SEPARATOR ' vs ') from games as g join players p on p.game_id = g.game_id where g.map = 'x' group by g.game_id;

+0

謝謝你的答覆,但它只會得到一個map = x行的列表:( – Mael

+0

用戶可以搜索的內容是什麼? – Nivedita

+0

用戶可以通過玩家,地圖,玩家的文明和敵人的文明進行搜索。與上面的示例 – Mael