CSV自动更新程序

时间:2012-09-06 15:23:10

标签: php mysql

我正在尝试为足球数据库创建自动分数更新程序。我的客户将通过电子邮件向我发送CSV电子表格,其中包括游戏日期,主队,主场得分,客队以及访问分数。问题是我有一个单独的团队表(team_id,team_name等)和游戏表,如下所述:

团队(team_id,team_name等)

游戏(game_id,game_home_team,game_home_score,game_visitor_team,game_visitor_score,game_date,game_complete)

样本游戏数据(1,123,0,156,0,8-31-2012,否) - >我将团队的id而不是他们的名字存储在游戏桌中。

我需要编写一个自动更新分数的脚本。每周大约有327个分数。

CSV将如下所示(带列标题):

game_date,home_team,home_score,visitor_team,visitor_score

(2012-8-31,Forest Hills,44,Westmont Hilltop,0) - >样本数据

我如何首先获得团队ID,然后将他们的主页和访客ID与他们的团队名称匹配,然后获得与匹配的team_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知识不够广泛(我认为)不能让它发挥作用。

1 个答案:

答案 0 :(得分:0)

让我们将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

希望有所帮助。