ここに与えられたテーブルがあるとしましょう。テーブルの構造は次のとおりです(テスト日、学生の名前、取得した点数)
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 行を超えるため、コード全体に時間がかかりすぎます (分単位)。
より良い提案はありますか?