我有一个包含以下列的表:match_id、player_slot、能力、级别
每场比赛有 10 个玩家位置,每个英雄最多可以有 25 个级别和五种能力之一。我正在从 API 中提取数据,并且需要快速拉取数据,因此我对表格的设置方式没有太大的灵活性。
然而,为了显示数据,我真的很难将现有的表格格式变成可行的东西。对于每场比赛,我希望数据的布局如下:
玩家 slot1, 1 级能力, 2 级能力, ..., 16 级能力
...
玩家 slot10, 1 级能力, 2 级能力, ..., 16 级能力
我可以得到一个工作示例(Here's an example),但这是一个非常丑陋的查询。对于每一行,我有 15 个嵌套子查询,然后执行一个 UNION 来连接 10 行中的每一行。
查询片段:
SELECT player_slot, ability,
(SELECT ability FROM api_abilities WHERE match_id = 119009486 AND player_slot = 1 AND level = 2 ),
...
(SELECT ability FROM api_abilities WHERE match_id = 119009486 AND player_slot = 1 AND level = 16 )
FROM api_abilities
WHERE match_id = 119009486 AND player_slot = 1 AND level = 1
我将如何简化这一点?我应该使用以不同方式呈现的这些数据创建视图或新表吗?同样复杂的是,每个玩家都会以不同的级别结束游戏。我现在所拥有的确实有效,但似乎必须有一种更有效的方式来运行查询。我尝试了一些不同的方法,但似乎无法在我的其他查询中正确地进行行合并。