Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]Sprawdzenie, czy jest w tabeli istnieje rekord pomiędzy określonym czasem
arturpiotrowski
post 29.03.2017, 20:52:29
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 6.12.2016

Ostrzeżenie: (0%)
-----


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?.

Ten post edytował arturpiotrowski 29.03.2017, 20:54:03
Go to the top of the page
+Quote Post
thek
post 29.03.2017, 21:21:32
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
arturpiotrowski
post 11.04.2017, 05:38:49
Post #3





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 6.12.2016

Ostrzeżenie: (0%)
-----


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

Ten post edytował arturpiotrowski 11.04.2017, 05:47:50
Go to the top of the page
+Quote Post
Pyton_000
post 11.04.2017, 07:56:24
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


http://stackoverflow.com/a/28389422/3732803

Tu masz odpowiedź na nurtujące Cię pytanie smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 23:25