Autor | Zpráva | ||
---|---|---|---|
Andrej.B Profil |
#1 · Zasláno: 13. 7. 2021, 23:57:13
Zdravim,
snazim sa vybrat vsetky zaznamy z tabulky cinnost_cistenie, podla urcitych kriterii 1. cinnost_cistenie_stroj = stroj, ku ktoremu chcem pridat zaznam = napriklad id 1 mam na to Group BY nazov_cinnost_cistenie aby som ich zobrazil len raz Pekne mi zobrazi len tie cinnosti, ktore mam ku kontretnemu stroju /stroje 1-19 maju rovnake a stroj 24 ma ine cinnosti/ POtrebujem k tomu prihodit este podmnienku z tabulky zaznam_cistenie - ak v nej najde datum zaznamu tej id_cinnost_cistenie, ktory je vaccsi ako terajsi datum -8 hodin, tak nech ho vo vysledku nezobrazuje. Mam ho ako unixtimestamp. Mam napriklad select: SELECT cc.nazov_cinnost_cistenie,cc.id_cinnost_cistenie,ccc.cas_cinnost_cas,ccs.id_cinnost_cistenie FROM cinnost_cistenie cc JOIN cinnost_cistenie_stroj ccs ON ccs.id_cinnost_cistenie= cc.id_cinnost_cistenie JOIN cinnost_cistenie_cas ccc ON ccc.id_cinnost_cistenie= cc.id_cinnost_cistenie WHERE ccs.id_stroj= 1 GROUP BY cc.nazov_cinnost_cistenie ORDER BY cc.id_cinnost_cistenie ASC ten zobrazi vsetky cinnosti, ktore ma ten stroj pri sebe a ich casovy ramec... Ako k tomu dat este tu podmienku z tabulky zaznam_cistenie terajsi datum -8 hodin? Dal som to na sqlfiddle.com/#!9/60757d/10 ... Ak by sa dalo niekomu na to kuknut... Bude tam treba zmenit mozno ten datum, nakolko priklad je z /1626211665/ 13.07.2021 - 23:27:45 ... Dakujem |
||
Kajman Profil |
#2 · Zasláno: 14. 7. 2021, 00:31:05
Můžete např. zkusit připojit left joinem časy do osmi hodin a pak vyfiltrovat ty řádky, kde se takový čas žádný nenašel (v připojené tabulce bude u not null sloupce null hodnota).
SELECT cc.nazov_cinnost_cistenie,cc.id_cinnost_cistenie,ccc.cas_cinnost_cas,ccs.id_cinnost_cistenie FROM cinnost_cistenie cc JOIN cinnost_cistenie_stroj ccs ON ccs.id_cinnost_cistenie= cc.id_cinnost_cistenie JOIN cinnost_cistenie_cas ccc ON ccc.id_cinnost_cistenie= cc.id_cinnost_cistenie AND ccc.id_stroj= ccs.id_stroj LEFT JOIN zaznam_cistenie zc ON zc.id_cinnost_cistenie= ccs.id_cinnost_cistenie AND zc.id_stroj= ccs.id_stroj AND zc.datum_zaznam_cistenie>(1626211665-8*60*60) WHERE ccs.id_stroj= 1 AND zc.id_cinnost_cistenie IS NULL ORDER BY cc.id_cinnost_cistenie ASC |
||
Andrej.B Profil |
Unbelievable.
Zda sa mi, ze som si odkusol prilis velke susto, ale tu mi vzdy dobre poradite. Casovy ramec som dopisal podla toho, co je pri kazdej cinnosti nastavene a pridal id_user, ktory to vsetko zapisuje. SELECT cc.nazov_cinnost_cistenie,cc.id_cinnost_cistenie,ccc.cas_cinnost_cas,ccs.id_cinnost_cistenie FROM cinnost_cistenie cc JOIN cinnost_cistenie_stroj ccs ON ccs.id_cinnost_cistenie= cc.id_cinnost_cistenie JOIN cinnost_cistenie_cas ccc ON ccc.id_cinnost_cistenie= cc.id_cinnost_cistenie AND ccc.id_stroj= ccs.id_stroj LEFT JOIN zaznam_cistenie zc ON zc.id_cinnost_cistenie= ccs.id_cinnost_cistenie AND zc.id_stroj= ccs.id_stroj AND zc.datum_zaznam_cistenie>(UNIX_TIMESTAMP()-ccc.cas_cinnost_cas*60*60) AND zc.id_user= $id_user WHERE ccs.id_stroj= $id_stroj AND zc.id_cinnost_cistenie IS NULL ORDER BY cc.id_cinnost_cistenie ASC Dakujem moc. Andrej |
||
Kajman Profil |
#4 · Zasláno: 14. 7. 2021, 09:29:53
Moc nechápu tu podmínku na uživatele. Když ten stroj před chvíli čistil Pepa, proč by ho měl čistit ještě Franta?
|
||
Andrej.B Profil |
#5 · Zasláno: 14. 7. 2021, 15:32:52
ked sa prihlasi dalsi uzivatel na inej smene, nakolko hodnota skoro kazdej cinnosti je 8 hodin, co je aj jedna smena. Ranna, pooobedna, nocna - 3 rozne smeny, 3 rozne loginy, na jeden login su 3-4 operatori, preto ta podmienka, ak uz je cinnost zaznamenana, za poslednych 8 hodin, toho loginu, aby ,mu to neukazovalo a nemohol zapisat, treba to urobit co najviac blbovzdorne a nemoznost to obist, dopisovat za inych a podobne.
Doteraz sa to robi na papier (tony papiera a nemoznost automatickej kontroly) a takto by bol nad tym lepsi prehlad. Hlavne ked pride auditor, ktory sa v tom dost vrta :) |
||
Časová prodleva: 3 roky
|
0