2009-08-19 2 views
0

학교용 장비 예약 (PHP/MySQL)을 만들고 있습니다.MySQL Select - Reservation System의 로직 결정

내 데이터베이스는 다음과 같습니다. '를 사용할 수 없습니다'나는 어떤 항목이 있는지 확인하기 위해 사용자의 시간 매개 변수를 기반으로 데이터베이스를 쿼리하는 가장 좋은 방법을 알고 싶습니다

tblEvents: 
id 
start 
end 
equipID 


tblEquipment: 
    id 
    name 
    description 

예를 들어

, 나는 다음과 같은 데이터가있는 경우 :

tblEvents: 
    id  start   end   equipID 
    1  1251312300 1251324000  1 

을 그리고 사용자는 "equipID"1 사용할 수 있는지 찾고, 쿼리를 제출하고 그들이 넣어 : 같은

1,251,300,300 자신의 시작은 1251524000입니다.

시작하는 데 도움이 될 것입니다. 감사.

+0

이 여러 날 체크 아웃 정상/허용? 그렇다면 작업이 까다 롭지 만 불가능하지는 않습니다. –

답변

1

내가이 100 % 확실하지 않다,하지만이 쿼리가 아주 가까이 있어야한다고 생각 :

select * from tblEvents 
where (@starttime >= start && @starttime <= end) /* Starts while someone else has it */ 
or (@endtime >= start && @endtime <= end) /* Ends while someone else has it */ 
or (@startime <= start && @endtime >= end) /* Starts before & ends after someone else has it*/ 
and equipID = @equipID 

하는 @starttime 교체, @endtime & 적절한 장비 ID로 @equipID 및 & 종료 시간을 시작합니다 사용자가 입력 한 이 쿼리가 결과를 반환하지 않으면 시간 충돌이 없어야합니다.

기본적으로 *가 시작 & 종료 시간이고, -는 사용되지 않은 시간이고 | 그 다른 사람이 시간을 사용하고 있습니다 :

-|||||*|||||------*------ 
------*--------|||*||||-- 
------*--|||||||--*------ 
+0

좋은 그림, 고마워! –

0
SELECT * FROM tblEvents 
WHERE NOW() > FROM_UNIXTIME(end)