Autor | Zpráva | ||
---|---|---|---|
Matess Profil * |
#1 · Zasláno: 1. 2. 2019, 13:10:40
Dobrý den,
potřeboval bych poradit jak vypsat data z databáze, tak aby se data zobrazovala jen v jednom řádku. Mám tabulku: id | datum | prichod | odchod ----------------------------- 1 | 2019-1-1 | 6:00:00 | NULL 1 | 2019-1-1 | NULL | 14:00:00 1 | 2019-1-2 | 7:00:00 | NULL 1 | 2019-1-2 | NULL | 15:00:00 Teď, když vypíšu data, tak se vypíšou vlastně přesně jak je to v tabulce - což je v pořádku. Já bych ale potřeboval vypsat data s jedním datumem na jeden řádek. Čili aby mi to vypsalo: 1 | 2019-1-1 | 6:00:00 | 14:00:00 1 | 2019-1-2 | 7:00:00 | 15:00:00 Lze toho nějak docílit? Popřípadě, že ne, tak jak jinak mám navrhnout tabulku, abych zvládl vypsat časy, tak jak potřebuji? Jedná se o jednoduchý docházkový systém. Děkuji za vaše nápady. |
||
blaaablaaa Profil |
#2 · Zasláno: 1. 2. 2019, 13:14:57
Proč to rovnou není v jednom řádku? Vždy musí existovat příchod + odchod (nebo NULL, pokud ještě neodešel)
Zapisoval bych tři sloupce - id uživatele, datum a čas příchodu a odchodu (co kdyby časem přišla nutnost zapsat docházku přes noc?). |
||
Kajman Profil |
Taky bych to tak viděl. Tedy odchod najde poslední příchod daného zaměstnance. Zkontroluje, že je u něj odchod null a updatuje null na chtěný datetime. Odchody bez příchodu si můžete dávat to tabulky s chybami a pak je projít a udělat případně ruční doplnění docházky.
Pokud vyžadujete sloupce (date, time, time) místo (datetime, datetime), tak ten odchod může ještě kontrolovat datum a případně doplní 23:59:59 a přidá další řádek (či řádky) s příchodem 0:00. Pokud to ale nejde změnit a data dostáváte od třetí strany, tak to splácnutí také půjde. Asi by se to lépe psalo, pokud máte databázi s podporou window funkcí. Ještě pozor. U některých databází je potřeba pro správný počet hodin používat s datumem i časovou zónu (nebo duplikovaný sloupec s GMT časem), aby se správně spočítaly hodiny při přechodu na letní čas a zpět. |
||
HajekJirka Profil |
#4 · Zasláno: 1. 2. 2019, 13:56:10
Děkuji za vaše postřehy.
Zkusím to teda udělat do jednoho řádku. |
||
Časová prodleva: 5 let
|
0