MySQL Select Mantık belirlemek - Rezervasyon Sistemi

1 Cevap php

Benim okul için bir ekipman rezervasyon (PHP / MySQL) oluşturma.

Benim veritabanı bu gibi görünüyor:

tblEvents:
 id
 start
 end
 equipID


tblEquipment:
  id
  name
  description

Ben belirli bir öğe olup olmadığını görmek için bir kullanıcının zaman parametrelerine dayalı veritabanını sorgulamak için en iyi yolu bilmek istiyorum 'mevcut değil.'

Örneğin, ben aşağıdaki verileri varsa:

tblEvents:
  id      start          end         equipID
  1     1251312300    1251324000       1

Ve kullanıcı "equipID" 1 mevcut olup olmadığını görmek isteyen, sorgu gönderir ve onlar koymak:

Kendi başlangıç ​​ve onların sonu gibi 1251524000 1251300300 gibi.

Bu üyeye alma konusunda herhangi bir yardım büyük olurdu. Teşekkürler.

1 Cevap

Ben bu konuda% 100 emin değilim, ama bu sorgu oldukça yakın olması gerektiğini düşünüyorum:

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 & Değiştir @ EquipID uygun ekipman kimliği ile ve start & Kullanıcı tarafından girilen kez bitirmek. Bu sorgu sonuç döndürürse, o zaman hiçbir zaman çakışma olmamalıdır.

* Başlangıç ​​ve nerede temelde bu 3 senaryoları için kontrol ediyor zaman sonuna, - Kullanılmayan zaman, ve | onun başkası tarafından kullanılıyor saati:

-|||||*|||||------*------
------*--------|||*||||--
------*--|||||||--*------