andre Posted December 4, 2003 Report Share Posted December 4, 2003 man ir tabula ar cilveeku grupu, kuri rok bedri. Peec kaad laika atnaak cits un aizvieto vinu. tabulee pieregistreejas cilveeka vaards un kad saaci straadaat. Kad vinsh ir saacis, tas noziimee ka ieprieksheejais ir beidzis... cilveeks | kad darbs ir saakts jaanis | 16:00 maartinsh| 17:00 jaanis | 18:00 didzis | 19:00 maatrinsh| 20:00 utt ... kaa var izseleckteet datus, kura persona ir cik stundas straadaajusistraadaajis ??? Link to comment Share on other sites More sharing options...
des Posted December 5, 2003 Report Share Posted December 5, 2003 man domaaat, ka dotajaa tabulas struktuuraa ar 1 selektu tas nav iespeejams. piem, ja peedeejais ieraxts tabulaa ir Peeteri/23:45, tad sanaak, ka Peeteris ir straadaajis 4ever :) Taapeec es taisiitu tabulu: cilvis/darbs_saakts/darbs_beigts tad vienkaarshi uztaisiit select sum(darbs_beigts-darbs_saakts) from work_table group by cilvis.... Link to comment Share on other sites More sharing options...
andre Posted December 5, 2003 Author Report Share Posted December 5, 2003 vienkaarshi peedeejo ierakstu nenemt galvaaa, un kaapeec taisiit veel papildus ierakstu ar darba beigshanu, ja naakoshaaa ieraksta darba saakuma laiks sakriit ar ieprieksheejaaa ieraksta darba beigshanu ??? ja nevar ar vienu selektu to uztasiiit, mosh kaads pateiks kaa to var ar vairaakiem selectiem... Ieprieksh saku paldies! :) Link to comment Share on other sites More sharing options...
Krists Posted December 8, 2003 Report Share Posted December 8, 2003 Man domat, tikai ar selektu to uztaisit nevar. Te jataisa ta, ka select visus ierakstus vai par konkretu laika periodu, kas interese, un tad jaiet cauri ierakstiem un jasaskaita laiki par attiecigo cilveku. Pirms tam drosi vien jauztaisa array ar cilvekiem, kur tos laikus pieskaitit. Array ar cilvekiem savukart pirms tam var dabut ar atsevisku 'select distinct cilveks from...' Lai aprakstitu laikus, kad neviens nerok bedri, butu jaieviesh cilveks 'nobody', tipa, kad peteris aiziet prom un janis vel nav atnacis, vinam japieraksta, ka it ka bedri sacis rakt sis te 'nobody', un tad saskaitot laikus, sos te nekur nepieskaita. Link to comment Share on other sites More sharing options...
des Posted December 8, 2003 Report Share Posted December 8, 2003 DB struktuuraa "liekus" laukus via "liekus" indexus biezhi vien naakas ieviest taapeec, lai pats algoritms buutu vienkaarhsaaks. Es Tev paraadiiju, kaa pamodificeet tabulu, lai to visu dabuutu gatavu ar vienu selectu :) Savaadaak ir jaataisa kaut kas taac: $res=mysql_query('select * from work_table order by x_time'); while ($l=mysql_fetch_assoc($res) { $data[]=$l; } for ($x=0;$x<sizeof($data)-1;$x++){ $pplz[$data[$x]['cilvis']]+=$data[$x+1]['x_time']-$data[$x]['x_time']; } Tad nu Tev beigaas buus masiivs $pplz, kur kura indexi buus cilveeku vaardi un atteiciigaas veertiibas sho cilvju nostraadaatie laiki. Iemesls, kaapeec to nevar izdariit tikai ar query, ir tas, ka mysql var reekjinaat & darboties tikai attieciigaas tabulas rindas ieraxtiem (nevis ar rindu+1 vai rindu-7). Tieshi taapeec, lai to izdariitu tikai ar sql, ir jaaieviesh papildus laux: darba beigshana. Tad nu skaties pats, kas Tev vienkaarshaak :) Link to comment Share on other sites More sharing options...
Venom Posted December 8, 2003 Report Share Posted December 8, 2003 Shkiet, ka vareetu uztaisiit ar JOINu (tikai ideja). tabula table: uid|name|starttime|endtime Jaanis saak darbu 12:45 UPDATE table SET `endtime` WHERE `uid`='peedajais_uid' 1|Nobody|0|12:45 INSERTS: 2|Jaanis|12:45|... Atnaak Peeteris 16:00: update: 2|Jaanis|12:45|16:00 insert: 3|Peeteris|16:00 Kaa uzzzinaak kursh shobriid straadaa? SELECT `name` FROM table WHERE endtime IS NULL Kaa uzzinaat sik kursh ir nostraadaajis? SELECT name,(endtime-starttime) FROM table LEFT JOIN table ON endtime=startime Neesmu meegjinaajis, vareetu buut, ka atgriezh taa tur laiku, kas straadaaja ieprieksh, bet tas arii buutu apejams Link to comment Share on other sites More sharing options...
Recommended Posts