0

私は PHP の専門家とはほど遠いので、これには唖然とし、そのためのスクリプトを作成することはできないようです。

これをできるだけ明確に説明できるかどうか見てみましょう。

table1 と table2 があるとしましょう

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

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

table1 から table 2 にコピーするときに、その前に 2 つのフィールドを追加したいと考えています。(ID とトーナメント ID)

私が直面している問題は、Table1 の roundxpos/roundxscore の量が毎回異なることです。

基本的に私がやりたいことは、トーナメントが終わったらテーブルを削除したいということです。その中のデータを別のテーブルにコピーして、結果をアーカイブします。ただし、トーナメントごとにラウンドのサイズが異なる場合があります。

+_+を達成しようとしていることを誰かが理解してくれることを願っています。

4

2 に答える 2

0

3番目のテーブルを作成し、既存のテーブルからroundX列を削除して、それらをIDで参照する必要があります。

rounds: team_id, tournament_id, no, pos, score
于 2012-04-15T08:37:37.160 に答える
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 に答える