我正在编写一个自定义搜索框来查找星际争霸游戏,但我不知道如何进行查询。例如,用户搜索“玩家:丹尼尔,玩过:‘x’ map 上的虫族 vs 人族玩家”
所以我有这个表:
table 上游戏
+------------+----------+-------------+----------+
| game_id | map | match | winner |
+------------+----------+-------------+----------+
| 7 | y | 1v1 | 1 |
| 8 | x | 1v1v1 | 2 |
| 9 | w | 1v1v1 | 3 |
| 10 | x | 1v1 | 1 |
+------------+----------+-------------+----------+
table 上玩家
+------------+----------+-------------+----------+
| 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, 丹尼尔 (虫族) vs 玛丽亚 (神族) vs 艾尔 (人族), map : x
Game_id:10, 1v1, 丹尼尔 (虫族) vs 奥斯卡 (人族), map : x
这里的问题是我如何获得游戏,其中存在丹尼尔玩家和虫族文明,并且对手在同一game_id中拥有人族文明??!而且游戏也是在x map 上玩的?
PD:正如您所注意到的,每个游戏都有不同规模的玩家。请帮忙。非常感谢
最佳答案
试试这个从游戏中选择 g.game_id, GROUP_CONCAT(CONCAT(p.player,'(', p.Civilization, ')-',g.map) SEPARATOR ' vs ') 作为 g 加入玩家 p在 p.game_id = g.game_id 上,其中 g.map = 'x' group by g.game_id;
关于mysql - 查询以从自定义搜索中获取特定数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44666037/