我正在编写自定义搜索框以查找星际争霸游戏,但我不知道如何进行查询。例如用户搜索"玩家: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:当你注意到每个游戏可以拥有不同大小的玩家时。请帮忙。非常感谢答案 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;