Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Sprawdzenie, czy jest w tabeli istnieje rekord pomiędzy określonym czasem
Forum PHP.pl > Forum > Przedszkole
arturpiotrowski
Mam w tabeli między innymi pola: time_from, time_to - typu TIME i pole day typu TINYINT. Dodaje do bazy rekord z takimi danymi:
Kod
day=1; time_from="13:00:01"; time_to="18:00:00";

Następnie dodaje takie dane:
Kod
day=1; time_from="14:00:01"; time_to="20:00:00";
day=1; time_from="11:00:01"; time_to="15:00:00";
day=1; time_from="12:45:01"; time_to="13:00:00";

Jeśli dodam powyższe dane, to w tabeli będzie kilka zadań wykonywanych w tym samym czasie, a założenie jest takie że nie może być więcej jak jedno zadanie w tym samym czasie. Nie mam pomysłu jak zbudować zapytanie SQL sprawdzające czy w czasie pomiędzy dwoma godzinami (gg:mm) time_from i time_to już coś jest w bazie.
Jak powinna wyglądać klauzula where dla takiego zapytania?.
thek
Chyba najprościej jest sprawdzić czy pomiędzy interesującymi Cię godzinami jakieś zadanie ma swój początek lub koniec. Jeśli ma początek, to decydujesz które ma pierwszeństwo i albo wciskasz nowe przed nie, albo ustawiasz nowe po jego końcu. Gdy masz w tym czasie koniec, to po prostu ustawiasz początek nowego po zakończeniu starego.

Inna sprawa jest taka, że IMHO źle do tego podszedłeś. Istotny jest bowiem początek i czas trwania, a nie godzina zakończenia. Tę łatwo wyliczyć dodając do początku czas trwania smile.gif Poza tym dodając kolejne rekordy nie grzebiesz się z tym, ale jeśli to jest kolejka jakaś, to łapiesz pierwszy z brzegu o najwcześniejszej dacie. Gdy się skończy, znowu łapiesz najwcześniejszy, aż do wyczyszczenia kolejki. Wszystko zależy do czego Ci to potrzebne.
arturpiotrowski
czyli, jak ktoś doda np że chce wykonywać zadanie w godzinach 14:00 - 20:00 to mam w php obliczyć ilość minut i te ilość minut wsadzić do bazy? ok Zakładając że nie ma godziny zakończenia w bazie to jak teraz sprawdzić czy dodawane dane nie pokrywają się?
Kod
day=1; time_from="14:00:00"; minutes="360";
day=1; time_from="11:00:00"; minutes="240";
day=1; time_from="12:45:00"; minutes="15";

Zadania będą dodawane z konkretnymi godzinami a nie po kolei, tak że np między zadaniami będzie czas wolny, nie tak że jak ktoś doda zadanie 15 minutowe od 12:45 to następne musi być wprowadzone z czasem od 13:00. Będzie mógł wpisać np od 18:00 i następnie ktoś inny będzie mógł zająć czas pomiędzy 13:00 a 18:00
Pyton_000
http://stackoverflow.com/a/28389422/3732803

Tu masz odpowiedź na nurtujące Cię pytanie smile.gif
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.