Autor | Zpráva | ||
---|---|---|---|
Martin Kovac Profil |
#1 · Zasláno: 20. 4. 2009, 11:29:48
Mam tabulku rozvrhy v databaze kde mam polozky startTime a endTime. Dalej mam niekolko zaznamov napr. prvy zaznam ma startTime=7:00, endTime=9:00, dalsi zaznam ma startTime=12:00, endTime=13:00 a posledny zaznam ma startTime=13:45, endTime=15:15. Existuje SQL dotaz ktory by bol schopny vratit prave opacne casy? teda nie 7-9,12-13,13:45-15:15 ale 0-7,9-12,13-13:45,15:15-24? Alebo sa to musi riesit na niekolko SQL dotazov? Aky dotaz resp. skript navrhujete aby som vedel do pola zaznamenat prave takyto opacny cas?
Ak by niekto vedel poradit resp. strucne napisat navod ako spravne na to. Vdaka |
||
tiso Profil |
#2 · Zasláno: 20. 4. 2009, 13:14:51
Martin Kovac - ako chceš z DB vrátiť niečo, čo tam nie je?
|
||
Mastodont Profil |
#3 · Zasláno: 20. 4. 2009, 14:40:09
Možná na něco přijde Kajman, ale tady jde o intervaly mezi hodnotami z různých řádků, to bych řešil na aplikační úrovni.
|
||
mikul Profil |
#4 · Zasláno: 20. 4. 2009, 14:53:56
Tak si jen v kódu přehoď časy začátků a konců.
Když bys to promyslel tak by to snad šlo ne? Nazvu-li ty mezery - časy co chceš vypsat - jako přestávky, tak začátek přestávky je zárověň konec předchozí hodiny, a konec přestávky je zároveň začátek následující hodiny. |
||
TomášK Profil |
#5 · Zasláno: 20. 4. 2009, 18:18:03
Zkus
SET @time=0; SELECT start, end FROM ( SELECT @time AS start, start AS end, @time := end AS next_start FROM rozvrh ) AS t UNION SELECT(@time, 24) Ale nejsem si jist, jestli to není cesta do horoucích pekel. Nevím, jestli nehrozí, že se někdy vyhodnotí @time := end dřív než @time, nevím, jestli se část za UNION vyhodnotí až poté, co se provede první SELECT. Bojím se, aby mi optimalizátor nezměnil pořadí, mám pocit, že už jsem se na tom spálil. Asi bych to řešil na úrovni php... |
||
Časová prodleva: 15 let
|
0