我正在尝试为足球数据库创建一个自动比分更新程序。我的客户会给我发送CSV电子表格,其中包括比赛日期、主队、主队得分、客队和客队得分。问题是我有一个单独的团队表(team_id、team_name等)和游戏表,如下所示:
团队(team_id、team_name等)
游戏(game_id、game_home_team、game_ome_score、game_visitor_team、game_visitor_core、game_date、game_complete)
样本游戏数据(1123,0156,0,8-31-2012,否)->我在游戏表中存储团队的id而不是他们的名字。
我需要写一个脚本,自动更新分数。每周大约有327分。
CSV将如下所示(带有列标题):
游戏日期,主页_上午,主页_核心,访问者_上午,访问者_核心
(2012-8-31,Forest Hills,44,Westmont Hilltop,0)->样本数据
我如何首先获得团队id,然后将他们的主场id和访客id与他们的团队名称进行匹配,然后获得与匹配的团队id相对应的游戏id,然后更新该游戏的分数?这太多了,我有点迷失在这个问题上。如果能提供任何帮助,甚至是更好的方法,我们将不胜感激。以下是我到目前为止所拥有的:
UPDATE game SET
game_home_score = ?,
game_visitor_score = ?,
game_complete = 'Yes'
WHERE game_id =
SELECT game_id
FROM game
WHERE game_home_team IN (
SELECT team_id
FROM team
WHERE team_name = ?
) AND game_visitor_team IN (
SELECT team_id
FROM team
WHERE team_name = ?
);
我知道这个问题是错误的,但就我需要走的方向而言,这正是我所想的。我的MySQL知识还不够丰富(我认为),无法让它发挥作用。
让我们将CSV文件中的数据放入一个名为CSV_data的表中,然后类似这样的操作应该会起作用:
update game g, csv_data c, team home_team, team visit_team
set g.game_home_score = c.home_score,
g.game_visitor_score = c.visitor_score,
g.game_complete = 'Yes'
where g.game_date = c.game_date
and home_team.team_name = c.home_team
and home_team.team_id = game.home_team
and visit_team.team_name = c.visit_team
and visit_team.team_id = game.visit_team
希望能有所帮助。