3

最近,我很难用我的 MySQL 数据库获得我想要的查询结果——目前我不确定问题出在数据库还是实际查询上。

基本上它是一个包含这些表的足球运动员数据库:

(player): player_id (primary), playerName
(match): match_id (primary), playerID1, playerID2, playerID3, etc..

我想查询数据库,以便返回匹配数据库中的属性,但返回的是球员的姓名而不是他们的 ID。

我可以让它为一名球员工作,但不能为其他球员工作。这是代码:

SELECT p.Name 
FROM `match` m
inner join `player` p on p.player_id=m.playerID1

但是当我添加第二个玩家时,p.Name已经映射到了,playerID1所以它不起作用。

我怀疑它的数据库设计得不是很好,但欢迎任何建议!

4

1 回答 1

6

那个数据库设计让你头疼。您应该通过添加一个同时具有 a和 a的表格来分解Match和之间的关系,从而允许尽可能多的玩家链接到 a ,而不必为每个玩家设置一个字段。PlayerMatchPlayerMatchIDPlayerIDMatch

但是,对于您的查询,您必须执行以下操作:

SELECT p.Name 
FROM `match` m
INNER JOIN `player` p 
    ON p.player_id IN (m.playerID1, m.playerID2, m.playerID3) //etc

演示 SQLFiddle这里

于 2012-05-25T08:29:00.077 回答