Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwanie wolnego terminu
Forum PHP.pl > Forum > Bazy danych > MySQL
northwest
Witam serdecznie,
Mam następującą tabelkę zawierającą rekordy z zajętymi terminami pojazdów:
  1. CREATE TABLE IF NOT EXISTS `cms_users_polaczenia_lotow` (
  2. `bf_id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `nazwa` varchar(160) COLLATE utf8_unicode_ci DEFAULT NULL,
  4. `idpojazdu` int(11) NOT NULL,
  5. `datastart` date DEFAULT NULL,
  6. `datacel` date DEFAULT NULL,
  7. `godzinastart` time DEFAULT NULL,
  8. `godzinacel` time DEFAULT NULL,
  9. UNIQUE KEY `id` (`bf_id`)
  10. ) 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)
cool.gif 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

nospor
1) Jestes juz troche na forum, powinienies wiedziec, ze nie wolno zakladać jednego tematu w roznych dzialach.... Drugi skasowalem.
2) Czemu robijasz na date i czas? Czemu nie trzymasz tej informacji w jednym polu DATETIME?? Przeciez jedno pole jest o niebo wygodniejsze
3)
Odnosnie punktu a:
Gdy już połączysz dwa pola w jedno DATETIME to robisz zwykly banalny warunek
...where CZAS_START <= szukany czas and CZAS_KONIEC >= szukany czas
mozesz tez uzyc poprostu BETWEEN
northwest
dziękuję bardzo za pomoc smile.gif

select bf_id from tabela WHERE datastart <='2014-07-23 2:10:00' and datacel >='2014-07-23 2:10:59' ;

czyli tak być widział to zapytanie? smile.gif
nospor
Tak. Przy zalozeniu rzecz jasna, ze połączyles dwa pola w jedno DATETIME
northwest
coś nie do końca to działa sad.gif

mam zapytanie:
  1. 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 14:55:00 oraz datacel = 2014-07-30 15:15:00
Zapytanie mi nie zwraca rekordu....

Potrzebuję zapytanie które sprawdzi mi, czy nie istnieją zajęte terminy w wybranym przedziale czasowym...
nospor
A patrzyles czy zapytanie nie zwraca ci tez przypadkiem bledu bazy?

ps: no ale chwila moment.... Nie pisales wczesniej o przedziale czasowym. PIsales ze szukasz danych dla danej godziny, a teraz w zapytaniu podajesz rozne czasy..
Wyraznie napisalem
...where CZAS_START <= szukany czas and CZAS_KONIEC >= szukany czas
Gdzie szukany czas to wartosc stala w obu warunkach a nie ty podajesz rozne
northwest
fakt,dziękuję smile.gif
nospor
ps2:
datacel = 2014-07-30 15:15:00
datacel >='2014-07-30 17:15:59'

Naprawde uwazasz ze
'2014-07-30 15:15:00' >='2014-07-30 17:15:59'
to jest prawdziwy warunek? Bo ja nie. tongue.gif Nie oczekuj wiec, ze znajdzie ci rekord dla nieprawdziwego warunku
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.