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