2017-06-21 93 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