Autor | Zpráva | ||
---|---|---|---|
pe3k Profil * |
#1 · Zasláno: 22. 7. 2010, 22:52:57
Zdravim, nie som si isty ci som si navrhol strukturu spravne, ale je nasledovna:
tabulka 'data' obsahuje udaje .... id, ..., start_time, end_time ... posledné dve sú typu TIME pri vkladaní nového záznamu potrebujem overiť, či je vkladaný čas ešte voľný .... ak áno záznam sa vloží ak nie, nevloží. v tabulke data mam napr. údaje: ID| start_time| end_time 1 | 11:00:00 | 12:30:00 2 | 13:00:00 | 14:00:00 3 | 15:30:00 | 16:30:00 idem vvlozit záznam novy .... 10:30:00 - 11:30:00 a potrebujem, overit či už existuje obsadený čas v DB, aby som mohol zapísať novy záznam alebo nemohol ... ako zapísať select dotaz na overenie tejto situácie, či je voľný termín alebo nie, časové intervaly nie sú pevné stanovené, teda pokiaľ je voľný čas, zapisujem dáta, teda vstupné údaje môžu zasahovať napr. len 5 minut cez obsadený čas, už musím dostať "pozitívny" select že v tabuľke už je toto miesto obsadené .... |
||
Alphard Profil |
#2 · Zasláno: 22. 7. 2010, 23:52:44 · Upravil/a: Alphard
Máte tam i datum, nebo vás nezajímá? Jde mi hlavně o to, jestli je třeba řešit časy jako od 22:50 do 0:15.
Edit: Případní hledači, přejděte rovnou na [#8] Kajman. Jednoduché a prosté :-) |
||
pe3k Profil * |
#3 · Zasláno: 23. 7. 2010, 00:27:57
prechod medzi dňami netreba riešiť,
ten dotaz nefunguje presne podla predstav ......... nevyberie tie "spravne" udaje, ak zadam rovnake udaje 2 a viac krat, spomenuty dotaz neselectne uz existujuci zaznam ,teda dalsi dotaz na vlozenie sa mi vykona, aj ked je tam uz ten "cas" obsadeny |
||
Alphard Profil |
#4 · Zasláno: 23. 7. 2010, 00:31:44 · Upravil/a: Alphard
Pozapomněl jsem na víc věcí. |
||
pe3k Profil * |
#5 · Zasláno: 23. 7. 2010, 00:46:37
ano, ked rovnosti upravim tak je zase problem ze mi nedovoli zapisat ani "susediace" terminy .... teda obsadeny je 11:00-12:00 .... a dalsi 12:00-... mi nedovoli zapisat, lebo sa tvari ze je "obsadeny" :) mozno staci trochu matematickej logiky do toho, len akosi sa nechytam
|
||
Alphard Profil |
#6 · Zasláno: 23. 7. 2010, 00:50:42
Zapomněl jsem teď na něco?
Mělo by být pokryto: - akce začínající v obsazeném intervalu - akce končící v obsazeném intervalu - delší akce zcela překrývající obsazený interval nebo akce ve stejném čase select count(*) from tabulka where (new_start > start and new_start < end) or (new_end < end and new_end > start) or (new_start <= start and new_end >= end) |
||
pe3k Profil * |
#7 · Zasláno: 23. 7. 2010, 01:05:14
neviem ci som vyskusal vsetky mozne kombinacie, ale snad ano, a vsetko je OK tak ako ma byt,
dakujem |
||
Kajman_ Profil * |
#8 · Zasláno: 23. 7. 2010, 08:56:57
Podmínku je možné zapsat jednodušeji...
select count(*) from `data` where `start_time`<'$new_end' and `end_time`>'$new_start' Viz. http://diskuse.jakpsatweb.cz/?action=vthread&forum=28&topic=108742 http://diskuse.jakpsatweb.cz/?action=vthread&forum=28&topic=69880 |
||
Časová prodleva: 14 let
|
0