0

サッカー データベースの自動スコア アップデーターを作成しようとしています。クライアントから、試合日、ホーム チーム、ホーム スコア、訪問チーム、訪問スコアを含む CSV スプレッドシートがメールで送られてきます。問題は、以下に概説するように、別のチーム テーブル (team_id、team_name など) とゲーム テーブルがあることです。

チーム (team_id、team_name など)

game(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, No) -> ゲーム テーブルに名前の代わりにチームの ID を保存します。

スコアを自動的に更新するスクリプトを作成する必要があります。1 週間で約 327 のスコアが表示されます。

CSV は次のようになります (列見出し付き)。

game_date、home_team、home_score、visitor_team、visitor_score

(2012-8-31、フォレスト ヒルズ、44、ウェストモント ヒルトップ、0) -> サンプル データ

最初にチーム ID を取得し、ホーム 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の知識は、これを機能させるのに十分ではありません(私はそうは思いません)。

4

1 に答える 1

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

それが役立つことを願っています。

于 2012-09-06T16:00:32.693 に答える