Wyszukiwanie wolnego terminu w MySQL

0

Witam serdecznie,
Mam następującą tabelkę zawierającą rekordy z zajętymi terminami pojazdów:


CREATE TABLE IF NOT EXISTS `cms_users_polaczenia_lotow` (
  `bf_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `nazwa` varchar(160) COLLATE utf8_unicode_ci DEFAULT NULL,
  `idpojazdu` int(11) NOT NULL,
  `datastart` date DEFAULT NULL,
  `datacel` date DEFAULT NULL,
  `godzinastart` time DEFAULT NULL,
  `godzinacel` time DEFAULT NULL,
  UNIQUE KEY `id` (`bf_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ; 

datastart = oznacza datę wyjazdu
datacel =oznacza datę dotarcia do celu
godzinastart = oznacza godzinę wyjazdu
godzinacel =oznacza godzinę dotarcia do celu

Potrzebuję zapytanie które:
a) sprawdzi czy dany pojazd jest zajęty w wyszukiwanym terminie (jeśli istnieje rekord o konkretnej godzinie i dacie = pojazd zajęty)
b) jeśli jest wolny - to wyświetli wolne terminy w formacie: 1:00, 1:05, 1:10, 1:15 itp (od 1 do 24 z wyłączeniem zajętych terminów).

Wie ktoś może jak to zrobić?

Bardzo proszę o pomoc,
Northwest

0

Bazę ktoś zepsuł na etapie projektu. Nie możesz zrobić normalnych pól DATETIME ? taki rozbijanie dat na stringi powoduje zdecydowanie wolniejsze przeszukiwanie oraz utrudnione pisanie zapytań

0

dziękuję za odpowiedź :)
Zrobiłem te 2 pola w formacie datatime.

ale coś nie do końca to działa :(

mam zapytanie:
select id from polaczenia WHERE datastart <='2014-07-30 15:15:00' and datacel >='2014-07-30 17:15:59' ;

i rekord w bazie z połączeniem: datastart = 2014-07-30 1400 oraz datacel = 2014-07-30 1500
Zapytanie mi nie zwraca rekordu....

Potrzebuję zapytanie które sprawdzi mi, czy nie istnieją zajęte terminy w wybranym przedziale czasowym...

0

przecież 15:15 jest mniejsza niż 17:15, więc nie pasuje do warunku

0

Na tym drugim forum ci źle warunek podpowiedziano...
Tu masz przykład: http://sqlfiddle.com/#!2/29f1d/4
Generalnie powinno być tak:

select * from x where `od`<=koniec_terminu and `do`>=poczatek_terminu

wtedy pokaze ci kazdy rekord, który "koliduje" z danym terminem

1 użytkowników online, w tym zalogowanych: 0, gości: 1