테이블이 2개 있는데 간략하게 설명해주세요.
표 1:
강좌와 학생 간의 관계 표
sid cid
1 | 1
1 | 2
1번 학생은 CID 1과 2가 있는 강좌를 선택했습니다
표 2:
특정 코스 일정 d
cid day start end
1 | 2 | 14 | 16
2 | 2 | 13 | 15
화요일 14:00-16:00 강좌 CID는 1입니다
이 외에도 학생 테이블 s, sid sname이 있습니다. 강좌일정c, cid cname
여기서 r과 d에서 이 학생이 두 개의 상충되는 과정을 선택했음을 볼 수 있습니다. SQL 문을 사용하여 충돌하는 레코드를 쿼리하는 방법은 무엇입니까?
즉, 시간이 엇갈리는 학생이 CID를 선택한 기록은 어떨까요?
연결을 사용하여 sid에 해당하는 cid와 해당 시간을 쿼리할 수 있습니다. 그러면 코스가 시간상 충돌하는지 어떻게 확인할 수 있나요?
첨부: 이 질문의 시나리오는 제가 질문 세트에서 본 내용입니다. 저도 강좌 선택 시 판단에 동의합니다
阿神2017-05-25 15:10:10
이 문제는 해결하기 쉽습니다:
이 학생이 등록한 모든 강좌를 알아보세요
이 코스들 사이에 시간 충돌이 있는지 확인하세요
같은 날인지 확인하세요. 같은 날이면 시작 시간과 종료 시간을 비교하여 충돌하거나 겹치는 부분이 있는지 확인하세요.
같은 날이 아니어도 문제 없습니다
추가됨:
그러나 등록 시 이 문제를 피해야 하며 충돌이 허용되지 않습니다.
등록 시, 수강신청한 수강시간과 이미 수강신청한 수강시간이 중복되는지 확인하세요. 중복되는 경우 수강신청이 불가합니다.
타임라인에서 두 기간을 비교하여 충돌이 있는지 확인하는 것은 실제로 계산하기 쉽습니다
A - B, C - D
A - C - B 또는 A - D - B
C - A - D 또는 C - B - D
네 가지 상황 사이에는 시간 충돌을 나타내는 교차점이 있습니다.
巴扎黑2017-05-25 15:10:10
사실 이런 상충되는 과목은 학생들이 과목을 선택할 때 판단해야 하고, 데이터베이스에 추가되어서는 안 된다고 생각해요
방법:
학생이 과목을 선택할 때마다 먼저 선택한 과목의 시간을 사용하여 현재 충돌하는 데이터가 데이터베이스에 이미 존재하는지 쿼리합니다
예:
sid = 1인 학생이 cid = 1인 강좌를 선택했다고 가정하고, cid = 2인 강좌를 선택하면 SQL은 다음과 같습니다.
이렇게 확인하는 것은 당일 해당 기간 내에 선택한 강좌가 있는지 확인하는 것입니다. 결과가 있으면 선택한 강좌의 시간이 신청한 강좌와 충돌한다는 의미입니다