0

我正在开发一个学校注册系统,学生可以在其中添加和删除课程以进行更多的 php 练习

例如,一个学生在他/她的日程表中添加了 2 个会计 101 课程,这是不应该发生的。

我如何检查我的行,如果会计 101 在课程表中出现两次,并自动删除第二个条目是重复的

例如我目前的日程安排:我的表

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 我编写了添加和删除类的代码,但我想防止添加重复的 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

通过表单插入记录时,首先检查类名是否存在

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

使用此查询,检查是否存在任何记录。如果是这样,则删除前一个并添加或简单地退出该条件。

希望能帮助到你!

于 2013-03-16T10:02:41.460 回答
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 回答