MYSQL:如何从姓氏中找到玩家id?

MYSQL:如何从姓氏中找到玩家id?,mysql,join,Mysql,Join,我现在正试图用未规范化的“摘要”表中的数据填充下面的“testMatch”表: 测试匹配表 +------------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------+--------------+------+-----+---------+-------+ |

我现在正试图用未规范化的“摘要”表中的数据填充下面的“testMatch”表:

测试匹配表

+------------------+--------------+------+-----+---------+-------+
| Field            | Type         | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+-------+
| match_id         | int(11)      | NO   | PRI | NULL    |       | 
| match_date       | date         | YES  |     | NULL    |       | 
| ground           | varchar(50)  | YES  | MUL | NULL    |       | 
| homeTeam         | varchar(100) | YES  | MUL | NULL    |       | 
| awayTeam         | varchar(100) | YES  | MUL | NULL    |       | 
| matchResult      | varchar(100) | YES  | MUL | NULL    |       | 
| manOfMatch       | varchar(30)  | YES  |     | NULL    |       | 
| homeTeam_captain | int(10)      | YES  | MUL | NULL    |       | 
| homeTeam_keeper  | int(10)      | YES  | MUL | NULL    |       | 
| awayTeam_captain | int(10)      | YES  | MUL | NULL    |       | 
| awayTeam_keeper  | int(10)      | YES  | MUL | NULL    |       | 
+------------------+--------------+------+-----+---------+-------+

但这将带回73排,应该只有65场比赛

我希望这是有意义的,谢谢你的帮助!!
特里萨

有重叠的名字吗?如果是这样,还应确保各团队将s.HomeTeam=p.team添加到where块。如果一个团队中有同名球员,则必须手动解决这些冲突

要同时选择所有守门员/队长,您需要。我想每个玩家只能加入一个,所以你必须加入同一张桌子4次


一旦选择了正确的数据,就可以将其插入到testMatch表中。

好的,我的查询可以工作,但我仍然不知道如何联接/子查询,以便将此查询结果放入我的“matchTest”表中?谢谢TheresaHi,恐怕s.HomeTeam=p.team为主队队长工作,但不是为主队门将工作,因为它返回61个结果,应该是65个。对不起,我是新手,星期三有一个作业要交!好吧,那么我猜这些管理员不在你的数据库中……或者他们的名字在两个表中写得略有不同?!您可以从摘要中选择所有游戏并左键加入玩家。然后,您可以看到哪些游戏的玩家为空,以及为什么没有比赛。嗨,拉里,我已经设法获得了我认为需要的查询:插入到testMatch match\u id,homeTeam\u captain select matchID,hometeamcaptain=选择玩家。玩家id来自玩家,摘要,其中players.player_姓氏=summary.HomeTeamCaptain和players.team=summary.HomeTeam来自摘要;但是错误是“error 1242 21000:Subquery返回超过1行”-我知道它返回65行。。。我想把65行插入到我的表中,为什么它不允许我呢?再次感谢“插入testMatch比赛id,homeTeam队长选择比赛id,从球员中选择球员.player\U id,摘要,其中球员.player\U姓氏=摘要.HomeTeamCaptain和球员.team=摘要.homeTeam作为摘要中的HomeTeamCaptain;”

mysql> DESCRIBE SUMMARY;
+-----------------+--------------+------+-----+---------+-------+
| Field           | Type         | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+-------+
| matchID         | int(11)      | NO   | PRI | NULL    |       | 
| Test            | int(11)      | YES  |     | NULL    |       | 
| matchDate       | date         | YES  |     | NULL    |       | 
| Ground          | varchar(50)  | YES  |     | NULL    |       | 
| HomeTeam        | varchar(100) | YES  |     | NULL    |       | 
| AwayTeam        | varchar(100) | YES  |     | NULL    |       | 
| matchResult     | varchar(50)  | YES  |     | NULL    |       | 
| MarginRuns      | int(11)      | YES  |     | NULL    |       | 
| MarginWickets   | int(11)      | YES  |     | NULL    |       | 
| ManOfMatch      | varchar(40)  | YES  |     | NULL    |       | 
| HomeTeamCaptain | varchar(30)  | YES  |     | NULL    |       | 
| HomeTeamKeeper  | varchar(30)  | YES  |     | NULL    |       | 
| AwayTeamCaptain | varchar(30)  | YES  |     | NULL    |       | 
| AwayTeamKeeper  | varchar(30)  | YES  |     | NULL    |       | 
+-----------------+--------------+------+-----+---------+-------+

mysql> describe players;
+----------------+--------------+------+-----+---------+----------------+
| Field          | Type         | Null | Key | Default | Extra          |
+----------------+--------------+------+-----+---------+----------------+
| player_id      | int(11)      | NO   | PRI | NULL    | auto_increment | 
| player_surname | varchar(30)  | YES  |     | NULL    |                | 
| team           | varchar(100) | YES  | MUL | NULL    |                | 
+----------------+--------------+------+-----+---------+----------------+


select matchID, player_id, player_surname, team from players p, 
summary
s where s.hometeamcaptain = p.player_surname ORDER BY matchID;