1

ここに与えられたテーブルがあるとしましょう。テーブルの構造は次のとおりです(テスト日、学生の名前、取得した点数)

D       NAME    MARKS
2001-01-01  a   1
2001-01-04  a   4
2001-01-06  a   3
2001-01-08  a   3
2001-01-01  b   1
2001-01-10  b   15
2001-01-01  c   1
2001-01-06  c   2
2001-01-08  c   5
2001-01-10  c   7

各テストにエントリがない学生には 0 点を付けて、表を更新したいと思います。更新テーブルは次のようになります

D   NAME    MARKS
2001-01-01  a   1
2001-01-02  a   0
2001-01-04  a   4
2001-01-06  a   3
2001-01-08  a   3
2001-01-02  a   0
2001-01-01  b   1
2001-01-02  b   0
2001-01-04  b   0
2001-01-06  b   0
2001-01-08  b   0
2001-01-10  b   15
2001-01-01  c   1
2001-01-02  c   2
2001-01-04  c   0
2001-01-06  c   0
2001-01-08  c   5
2001-01-10  c   7

これまでのところ、私が理解できる唯一の解決策(非常に遅いクエリ)は次のとおりです。

SELECT DISTINCT(D) FROM tableA;
SELECT DISTINCT(NAME) FROM tableA;

PHPを使用して、ネストされたループ内でSQLクエリが作成されます

INSERT IGNORE (D,NAME,MARKS)($D,$NAME,0);

ただし、50k 行を超えるため、コード全体に時間がかかりすぎます (分単位)。

より良い提案はありますか?

4

1 に答える 1