0

私は、学生がより多くのphp練習のためにクラスを追加および削除できる学校登録システムに取り組んでいます

たとえば、ある学生のスケジュールに 2 つの Accounting 101 クラスが追加されましたが、これは発生してはならないことです。

クラス スケジュールで Accounting 101 が 2 回発生した場合に行を確認し、重複している 2 番目のエントリを自動的に削除するにはどうすればよいですか

たとえば、現在のスケジュール: my Table

ticket   class_name      days    start_hours  end_hours  units   room_number   instructor_name
1094     Accounting 101  SAT     9:00 am 12:15 pm    5   CS266   HARMON , KAREN
2077     Accounting 101  M,W     5:00 pm 8:00 pm     5   SF103   SMITH,  BOB

チケット1094は経理101なので2回目の重複は自動で削除したい クラスの追加と削除のコードは書いたがclass_nameの重複を防ぎたい 追加または削除する必要がある

これに対するクエリをどのように書くことができますか。

ありがとう

4

3 に答える 3

1

上記の会話に基づいて、制約を追加して、学生が学期ごとに一意のテーブルを挿入できるようにすることができます。 class_name

ALTER TABLE register_classes 
ADD CONSTRAINT reg_unique UNIQUE (class_name, student_id, semester)

これを実行するとclass_name、特定の生徒に同じものを使用することはできなくなりますsemester

于 2013-03-16T10:12:03.243 に答える
0

後のチケット番号は、後で追加されたことを意味します。次のクエリは、削除する必要のあるすべての重複を返す必要があります。

SELECT *
FROM schedule s
WHERE s.ticket =  
    (SELECT MAX(s2.ticket) 
    FROM schedule s2
    WHERE s.class_name = s2.class_name
    GROUP BY s2.class_name, s2.student, s2.semester
    HAVING COUNT(1) > 1);

ただし、@ JWが指摘しているように、これらの重複を挿入する前にキャッチする方がよい場合があります。

于 2013-03-16T10:18:20.033 に答える
0

フォームからレコードを挿入するときは、まずクラス名が存在するかどうかを確認してください

$SQL = "SELECT * from student WHERE class_name = '".$_POST['class_name']."'";

このクエリを使用して、レコードが存在するかどうかを確認します。その場合は、前のものを削除して追加するか、単に条件から抜け出します。

それが役に立てば幸い!

于 2013-03-16T10:02:41.460 に答える