0

由于我远不是 php 专家,这让我惊呆了,我似乎无法为它编写脚本。

让我们看看我是否可以尽可能清楚地解释这一点。

假设我有 table1 和 table2

Table1 = (teamid, name, round1pos, round1score, round2pos, round2score)

Table2 = (id, tournamentid, teamid, name, round1pos, round1score, round2pos, round2score...till round10pos/round10score)

当从表 1 复制到表 2 时,我想在它前面添加 2 个字段。(id和锦标赛ID)

我面临的问题是 Table1 每次都有不同数量的 roundxpos/roundxscore。

基本上我想要做的是一旦锦标赛结束我想删除表。但将其中的数据复制到另一个表以存档结果。但每场比赛可以有不同大小的回合。

我希望有人能理解我想要实现的目标 +_+。

4

2 回答 2

0

您应该规范化您的表格,但与此同时......我假设主要问题是处理代码中的可变数量的 roundxpos 和 roundxscore 列。

希望这可以帮助:

  • 获取此查询的结果: SHOW COLUMNS FROM Table1 WHERE Field LIKE 'round%pos'
  • 获取此查询的结果: SHOW COLUMNS FROM Table1 WHERE Field LIKE 'round%score'
  • 通过遍历字段名称来创建 table2 插入

    //example, assuming results are fetched into an associative array
    $query = "INSERT INTO table2 (tournamentid, teamid, name)";
    foreach($roundpos_fields as $f){  $query .= "," . $f['Field'];  }
    foreach($roundscore_fields as $f){  $query .= "," . $f['Field'];  }
    $query .= "( SELECT $tournamentid, '' teamid, name"; 
    foreach($roundpos_fields as $f){  $query .= "," . $f['Field'];  }
    foreach($roundscore_fields as $f){  $query .= "," . $f['Field'];  }        
    $query .= ")";
    
于 2012-04-15T15:59:38.313 回答
0

您应该创建第三个表,从现有表中删除 roundX 列并使用它们的 ID 引用它们。

rounds: team_id, tournament_id, no, pos, score
于 2012-04-15T08:37:37.160 回答