查询以从自定义搜索中获取特定数据

时间:2017-06-21 02:46:22

标签: mysql

我正在编写自定义搜索框以查找星际争霸游戏,但我不知道如何进行查询。例如用户搜索"玩家:daniel,玩过:zerg 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,daniel(zerg)vs maria(protos)vs ale(terran),map:x
Game_id:10,1v1,daniel(zerg)vs oscar(terran),地图:x

这里的问题是我如何得到游戏哪里存在一个daniel玩家和zerg civ和哪个对手在同一个game_id中有一个人族文明?而游戏也在x地图中播放?

PD:当你注意到每个游戏可以拥有不同大小的玩家时。请帮忙。非常感谢

1 个答案:

答案 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;