Autor | Zpráva | ||
---|---|---|---|
Prkny Profil |
Dobrý den,
přemýšlím nad vytvořením tabulky s historickými sazbami DPH. A prosím o pomoc s mysql dotazem se kterým z důvodu neznalosti nemohu vůbec pohnout... Struktura: id, typ_sazby, sazba, platnost_od, platnost_do 1,zakladni, 19,2008-01-01,2009-12-31 2,zakladni, 20,2010-01-01,2012-12-31 3,zakladni, 21,2013-01-01,0000-00-00 Když je u sazby platnost ukončená funguje krásně tento dotaz: SELECT * FROM `sazby_dph` WHERE `typ_sazby` = 'zakladni' AND `platnost_od`<='2009-10-10' AND `platnost_do`>='2009-10-10' Pokud je platnost_do = '0000-00-00' (tedy aktuální sazba) nemohu výše uvedený dotaz použít (např. pro datum 2015-05-05) |
||
blaaablaaa Profil |
Dej platnost_do jako nullable a přidej podmínku
(`platnost_do`>='2009-10-10' OR `platnost_do` IS NULL)
//EDIT: upravena logická chyba |
||
Prkny Profil |
blaaablaaa:
To bohužel nefunguje: Dotaz s datem 2009-10-10 odpovídá výsledku sazby 19 i 21 : SELECT sazba FROM `sazby_dph` WHERE `typ_sazby` = 'zakladni' AND `platnost_od`<='2009-10-10' AND `platnost_do`>='2009-10-10' OR `platnost_do` IS NULL |
||
blaaablaaa Profil |
#4 · Zasláno: 10. 9. 2019, 10:29:44
Je tam špatně logika
(`platnost_do`>='2009-10-10' OR `platnost_do` IS NULL) platnost_do musí být rovna nebo větší ke zjišťovanému datu (pak záleží na nastavení logiky - zda to platnost_do platí včetně a platnost_od tedy bude o den větší nebo naopak).
|
||
Prkny Profil |
#5 · Zasláno: 10. 9. 2019, 11:19:56
blaaablaaa:
'platnost_od' i 'platnost_do' by měla být vždy včetně toho dne. Tedy sazba "19" by měla být vypsána u data 2008-01-01 i u data 2009-12-31. Proto jsem se domníval, že ty rovnítka jsou OK. Problém je, že pro datum 2009-10-10 by měla vyskočit sazba "19". Vyskakují ale 2 řádky: správně sazba "19" a špatně sazba "21" (odpovídá podmínce platnost_do IS NULL). SELECT sazba FROM `sazby_dph` WHERE `platnost_od`<='2009-10-10' AND `platnost_do`>='2009-10-10' OR `platnost_do` IS NULL |
||
blaaablaaa Profil |
#6 · Zasláno: 10. 9. 2019, 11:26:39
Prkny:
Je potřeba dodržet závorky. |
||
Prkny Profil |
#7 · Zasláno: 10. 9. 2019, 11:29:38
blaaablaaa:
Taková školácká chyba. Velice děkuji ! |
||
Keeehi Profil |
Prkny:
Je ještě jedna možnost co se používá. Do platnost_do dáte místo 0000-00-00 nějaké hodně vzdálené datum v budoucnosti u ktereho víte, že se ten systém v tu dobu už určitě používat nebude. Například 2099-12-31. |
||
Prkny Profil |
#9 · Zasláno: 12. 9. 2019, 20:21:10
Keeehi:
Vidíte, to mě taky vůbec nenapadlo... :-) Děkuji. |
||
Časová prodleva: 6 let
|
0