Jump to content
php.lv forumi

pēdējie ieraksti "pa pāriem". solved partly.


legalizeme

Recommended Posts

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 by legalizeme
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...