legalizeme Posted January 22, 2012 Report Share Posted January 22, 2012 (edited) Struktūra apmēram šāda: ------------- vecs,A,x vecs,A,y vecs,A,z vecāks,A,x vecāks,A,y vecāks,A,z ļotiJauns,B,x vecāks,B,y ļotiJauns,B,z tikpatvecs,C,x šausmīgvecs,C,x ------------- un vajag - rezultātā - ---------------- vecs,A,x vecs,A,y vecs,A,z ļotiJauns,B,x vecāks,B,y ļotiJauns,B,z tikpatvecs,C,x ---------------- select * from table where date=(select max(date) from table) atgriež tikai "ļotiJauns" ierakstus. select * from table group by LielaisBurts neatgriež mazosBurtus kā sagrupēt tā, ka katrs pāris (A,x, A,y, A,z.... C,x, Cy...) parādās distinkti un kā jaunākais pēc vecuma? Edited January 22, 2012 by legalizeme Quote Link to comment Share on other sites More sharing options...
legalizeme Posted January 22, 2012 Author Report Share Posted January 22, 2012 nu labi. workaround`u atradu. tajā brīdī, kad ieraksts tiek veidots, papildus iepriekšējā postā aprakstītai tabulas struktūrai ir vēl pievienotas divas kolonnas - 1) id kā primary key un 2)isLast kā "boolean", kurš ierakstu insertojot būs vienāds ar "1". tas nozīmē, ka, pirmoreizi insertojot visus datus, visiem ierakstiem defaultā isLast ir vienāds ar true=1. Datuma kolonnu pēc idejas var likvidēt kā tādu (ja nav nepieciešama datuma info saglabāšana un vēlāka attēlošana) tātad - pirmo reizi safetchojot datus un insertojot tabulā - visi ir "pēdējie" dati. safetchojot datus otro reizi var gadīties, ka kādas vērtības nevajag insertot datubāzē, jo, piemēram, vienādas - (nosacīta optimizācija un space saglabāšana) līdz ar to - tās vērtības, kurām otrajā reizē ir jā-inserto jaunas vērtības klāt - vecajām-iepriekšējām vērtībām isLast jānomaina uz false=0 (ar insert on duplicate palīdzību zinot id ar datuma palīdzību), savukārt jaunajām rindām isLast ir true=1, jo tie ir pēdējie safetchotie dati. trešo reizi insertojot tabulā tiek atrastas visas unikālas rindiņas ar isLast ir true jeb 1 - ja otrajā reizē netika insertotas, tad tām būs tikai viens ieraksts un to isLast būs vienāds ar true=1, savukārt ja otrajā reizē tika insertotas, tad tām būs divi ieraksti - pirmās reizes ieraksta isLast = 0 (caur iepriekšaprakstīto insert on duplicate), un otrās reizes insertošanas isLast=1. problem solved. partly. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.