> 데이터 베이스 > MySQL 튜토리얼 > MySQL Self-Joins는 하루 연속으로 발생하는 이벤트를 찾는 데 어떻게 도움이 됩니까?

MySQL Self-Joins는 하루 연속으로 발생하는 이벤트를 찾는 데 어떻게 도움이 됩니까?

DDD
풀어 주다: 2024-11-12 19:56:02
원래의
1054명이 탐색했습니다.

How do MySQL Self-Joins Help Find Events That Occur One Day After Another?

MySQL 셀프 조인 이해

MySQL의 셀프 조인을 이해하는 것은 어려울 수 있으며, 특히 처음 접하는 경우에는 더욱 그렇습니다. . 다음 쿼리를 분석하여 해당 메커니즘을 파악해 보겠습니다.

SELECT event2.id, event2.startdate, event2.price
FROM mm_eventlist_dates event1
JOIN mm_eventlist_dates event2 
ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)
WHERE event1.id = $id
로그인 후 복사

쿼리 분석:

FROM 및 JOIN:

  • 이 쿼리는 JOIN 키워드를 사용하여 두 개의 동일한 테이블인 mm_eventlist_dates의 데이터를 결합합니다.
  • 동일한 테이블을 두 번 나타내는 두 개의 가상 테이블인 event1과 event2를 생성합니다.

WHERE:

  • 이 절은 ID를 기준으로 event1의 특정 레코드를 선택합니다. 이 레코드가 Event1을 나타낸다고 가정합니다.

ON:

  • 이 절은 두 가상 테이블 간의 관계를 정의합니다.
  • 이벤트2의 시작일과 이벤트1의 종료일을 하루 차감하여 비교합니다.
  • 이 조건을 사용하면 이벤트2의 시작일이 이벤트1 종료 후 정확히 하루가 되어야 합니다.

SELECT:

  • 이 절은 쿼리에서 검색하려는 필드를 지정합니다.
  • 이 경우 ID, 시작 날짜를 선택합니다. 및 event2의 가격.

쿼리 작동 방식:

  1. 쿼리는 먼저 전달된 지정된 ID와 일치하는 event1의 레코드를 식별합니다. $id 변수입니다.
  2. event1에서 식별된 레코드에 대해 종료 날짜로부터 1일 후의 날짜를 계산합니다.
  3. 그런 다음 계산된 날짜를 이벤트의 레코드 시작 날짜와 비교합니다. event2.
  4. event1과 event2는 동일한 테이블이므로 event2에서 유일하게 일치하는 레코드의 시작 날짜는 event1이 끝난 후 1일입니다.
  5. event2의 이 일치 레코드는 다음 이벤트를 나타냅니다. (Event2)는 Event1 다음 날 발생합니다.
  6. 마지막으로 쿼리는 Event2의 ID, 시작 날짜, 가격을 검색하여 결과로 표시합니다.

위 내용은 MySQL Self-Joins는 하루 연속으로 발생하는 이벤트를 찾는 데 어떻게 도움이 됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿