찾다

 >  Q&A  >  본문

php - mysql 다중 테이블 쿼리

테이블이 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와 해당 시간을 쿼리할 수 있습니다. 그러면 코스가 시간상 충돌하는지 어떻게 확인할 수 있나요?

첨부: 이 질문의 시나리오는 제가 질문 세트에서 본 내용입니다. 저도 강좌 선택 시 판단에 동의합니다

滿天的星座滿天的星座2743일 전773

모든 응답(3)나는 대답할 것이다

  • 阿神

    阿神2017-05-25 15:10:10

    이 문제는 해결하기 쉽습니다:

    1. 이 학생이 등록한 모든 강좌를 알아보세요

    2. 이 코스들 사이에 시간 충돌이 있는지 확인하세요

      • 같은 날인지 확인하세요. 같은 날이면 시작 시간과 종료 시간을 비교하여 충돌하거나 겹치는 부분이 있는지 확인하세요.

      • 같은 날이 아니어도 문제 없습니다

    추가됨:

    그러나 등록 시 이 문제를 피해야 하며 충돌이 허용되지 않습니다.

    등록 시, 수강신청한 수강시간과 이미 수강신청한 수강시간이 중복되는지 확인하세요. 중복되는 경우 수강신청이 불가합니다.

    타임라인에서 두 기간을 비교하여 충돌이 있는지 확인하는 것은 실제로 계산하기 쉽습니다

    A - B, C - D

    A - C - B 또는 A - D - B

    C - A - D 또는 C - B - D

    네 가지 상황 사이에는 시간 충돌을 나타내는 교차점이 있습니다.

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-05-25 15:10:10

    사실 이런 상충되는 과목은 학생들이 과목을 선택할 때 판단해야 하고, 데이터베이스에 추가되어서는 안 된다고 생각해요

    방법:
    학생이 과목을 선택할 때마다 먼저 선택한 과목의 시간을 사용하여 현재 충돌하는 데이터가 데이터베이스에 이미 존재하는지 쿼리합니다

    예:
    sid = 1인 학생이 cid = 1인 강좌를 선택했다고 가정하고, cid = 2인 강좌를 선택하면 SQL은 다음과 같습니다.

    으아악

    이렇게 확인하는 것은 당일 해당 기간 내에 선택한 강좌가 있는지 확인하는 것입니다. 결과가 있으면 선택한 강좌의 시간이 신청한 강좌와 충돌한다는 의미입니다

    회신하다
    0
  • 習慣沉默

    習慣沉默2017-05-25 15:10:10

    이런 문제는 자체 연결을 통해 해결할 수 있습니다.

    으아아아

    회신하다
    0
  • 취소회신하다