약속을 설정할 수있는 iPhone 용 응용 프로그램을 만들려고합니다. 모든 것이 MySQL 데이터베이스에 저장되며 현재 JSON을 통해 내 응용 프로그램에 데이터를 가져옵니다. 이는 워크 플로입니다.iPhone의 일정 약속 충돌을 감지하는 SQL 문
- User1은 작업 할 때를 정의합니다. 예 : 오전 8시 - 오후 4시.
- User2는 user1과 약속을 잡길 원합니다 (예 : 오전 8시 ~ 9시.
스크립트는이 작업을 수행 할 수 있어야한다 :
- 약속이 사용자의 작업 시간 내에;
- 세 가지 가능한 방법으로 발생할 수있는 기존 약속과 충돌하지 않습니다.
- 새 약속 중에 충돌 약속이 시작됩니다. 및/또는
- 새 약속 중에 충돌 약속이 종료됩니다. 또는
- 충돌 약속은 새 약속 시작 전과 종료 후입니다.
// new row should be added here when the conditions above are met create table ios_appointment ( appointmentid int not null auto_increment, start timestamp, end timestamp, user_id_fk int ) // a working hour has a n:1 relationshipt to ios_worker create table ios_workinghours ( workinghoursid int not null auto_increment, start timestamp, end timestamp, worker_id_fk int ) // employee, has a 1:n relationship to ios_workinghours create table ios_worker ( workerid int not null auto_increment, prename varchar(255), lastname varchar(255), ... )
select 절에 대한 입력이 타임 스탬프,
start
및end
있습니다
이은 중요한 테이블 있습니다. 이들은 사용자에 의해 정의됩니다. 따라서 스크립트는 사용자 2가 특정 시간에 작업하고 있고 이미 약속이 있는지 확인해야합니다.
나는 현재이 같은 것을 가지고 있지만, 그것은 테이블을 연결하는 USER_ID를 사용
SELECT EXISTS (
SELECT *
FROM ios_appointments a JOIN ios_workhours h USING (user_id)
WHERE user_id = 1
AND h.start <= '08:00:00' AND h.end >= '09:00:00'
AND (
a.start BETWEEN '08:00:00' AND '09:00:00'
OR a.end BETWEEN '08:00:00' AND '09:00:00'
OR (a.start < '08:00:00' AND a.end > '09:00:00')
)
LIMIT 1
)
모든 도움에 감사드립니다. 고마워.
왜 SQL로 하시겠습니까? 당신은 단지 당신의 DB를 어떤 데이터 구조로 읽고 당신이 필요로 할 때 그것을 운영 할까? – Misha