
Mysql db dotaz
Ahoj, potřeboval bych pomoct s mysql dotazem...
Mám tabulku, kde mám (int)FID, (int)UID, (int)WEEK, (int)YEAR,...,
a potřebuji zjistit jedním dotazem minimální týden/rok a maximální týden/rok where FID= and UID =
Tedy když mám např. v tabulce tato data:
1;1;10;2016
1;1;15;2016
1;1;3;2017
1;1;5;2017
1;2;3;2016
1;2;15;2016
1;2;17;2017
a jako parametry FID = 1, UID = 1, tak potřebuji výsledek:
MIN_WEEK->10
MIN_YEAR->2016
MAX_WEEK->5
MAX_YEAR->2017
Problém je, že nevím, jak to udělat jedním dotazem. Díky moc!
ten týden/rok si daj dokopy, a bude to jendoduchý select, je nezmysel to mať v dvoch stĺpcoch
V pripade, ze je to skolni ukol nebo nemuzes zasahovat do tabulek
1. subselecty, to znamena napr. Min_Week = (select prikaz)
2. napojis si stejnou tabulku 2x a v podminkach pouzijes select (jednou na max, podruhe na min rok), ale tohle bude krkolomnejsi
3. spojis si rok + tyden ve vnitrnim selectu vyberes a vnejsim selectem zase rozeberes
select MinTyden = MinRokTyden MOD 10000, MinRok = MinRokTyden DIV 10000, ...
from (
select MaxRokTyden = Max(rok*10000 + tyden), MinRokTyden = Min(rok*10000 + tyden)
where FID=1 and UID=1
)
No zatím jsem vyplodil toto:
Ale asi to nebude z hlediska výkonu nic moc, takže asi projdu aplikaci a pokud to nebude na překopání celé app, tak to upravím na klasický DATE a při insertu budu převádět WEEK/YEAR (a MONTH/YEAR) na DATE
Pokud je to tvoje aplikace, pak to bude mnohem rozumnejsi
Já ji jen dostal na stůl po bývalém vývojáři a teď se přidávají nové fce
s trochou predstavivosti sa to da aj jednym selectom :)
Opakujuci kod mozes nahradit scalarnou funkciou :)
Děkuji všem za pomoc, nakonec jsem si dal tu práci překopat app a v db ukládám vždy DATE - z toho získám den, víkend i měsíc a rok...